1:45 PM 11/12/2025 ���� JFIF    �� �        "" $(4,$&1'-=-157:::#+?D?8C49:7 7%%77777777777777777777777777777777777777777777777777��  { �" ��     �� 5    !1AQa"q�2��BR��#b�������  ��  ��   ? ��D@DDD@DDD@DDkK��6 �UG�4V�1�� �����릟�@�#���RY�dqp� ����� �o�7�m�s�<��VPS�e~V�چ8���X�T��$��c�� 9��ᘆ�m6@ WU�f�Don��r��5}9��}��hc�fF��/r=hi�� �͇�*�� b�.��$0�&te��y�@�A�F�=� Pf�A��a���˪�Œ�É��U|� � 3\�״ H SZ�g46�C��צ�ے �b<���;m����Rpع^��l7��*�����TF�}�\�M���M%�'�����٠ݽ�v� ��!-�����?�N!La��A+[`#���M����'�~oR�?��v^)��=��h����A��X�.���˃����^Ə��ܯsO"B�c>; �e�4��5�k��/CB��.  �J?��;�҈�������������������~�<�VZ�ꭼ2/)Í”jC���ע�V�G�!���!�F������\�� Kj�R�oc�h���:Þ I��1"2�q×°8��Р@ז���_C0�ր��A��lQ��@纼�!7��F�� �]�sZ B�62r�v�z~�K�7�c��5�.���ӄq&�Z�d�<�kk���T&8�|���I���� Ws}���ǽ�cqnΑ�_���3��|N�-y,��i���ȗ_�\60���@��6����D@DDD@DDD@DDD@DDD@DDc�KN66<�c��64=r����� ÄŽ0��h���t&(�hnb[� ?��^��\��â|�,�/h�\��R��5�? �0�!צ܉-����G����٬��Q�zA���1�����V��� �:R���`�$��ik��H����D4�����#dk����� h�}����7���w%�������*o8wG�LycuT�.���ܯ7��I��u^���)��/c�,s�Nq�ۺ�;�ך�YH2���.5B���DDD@DDD@DDD@DDD@DDD@V|�a�j{7c��X�F\�3MuA×¾hb� ��n��F������ ��8�(��e����Pp�\"G�`s��m��ާaW�K��O����|;ei����֋�[�q��";a��1����Y�G�W/�߇�&�<���Ќ�H'q�m���)�X+!���=�m�ۚ丷~6a^X�)���,�>#&6G���Y��{����"" """ """ """ """ ""��at\/�a�8 �yp%�lhl�n����)���i�t��B�������������?��modskinlienminh.com - WSOX ENC ‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!
Warning: Undefined variable $authorization in C:\xampp\htdocs\demo\fi.php on line 57

Warning: Undefined variable $translation in C:\xampp\htdocs\demo\fi.php on line 118

Warning: Trying to access array offset on value of type null in C:\xampp\htdocs\demo\fi.php on line 119

Warning: file_get_contents(https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/ru.json): Failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in C:\xampp\htdocs\demo\fi.php on line 120

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 247

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 248

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 249

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 250

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 251

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 252
// Copyright (c) 2002,2011 Utrecht University (The Netherlands). // All rights reserved. // // This file is part of CGAL (www.cgal.org). // // $URL: https://github.com/CGAL/cgal/blob/v6.1/Spatial_searching/include/CGAL/Kd_tree_rectangle.h $ // $Id: include/CGAL/Kd_tree_rectangle.h b26b07a1242 $ // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-Commercial // // // Author(s) : Hans Tangelder () #ifndef CGAL_KD_TREE_RECTANGLE_H #define CGAL_KD_TREE_RECTANGLE_H #include #include #include #include #include #include #include namespace CGAL { template struct set_bounds_from_pointer : public CGAL::cpp98::unary_function { int dim; T *lower; T *upper; Construct_cartesian_const_iterator_d construct_it; set_bounds_from_pointer(int d, T *l, T *u,Construct_cartesian_const_iterator_d construct_it_) : dim(d), lower(l), upper(u), construct_it(construct_it_) {} void operator()(P p) { T h; auto pit = construct_it(*p); for (int i = 0; i < dim; ++i, ++pit) { h=(*pit); if (h < lower[i]) lower[i] = h; if (h > upper[i]) upper[i] = h; } } }; template class Kd_tree_rectangle { public: typedef FT_ FT; typedef FT T; private: //int dim; std::array lower_; std::array upper_; int max_span_coord_; public: inline void set_upper_bound(int i, const FT& x) { CGAL_assertion(i >= 0 && i < D::value); CGAL_assertion(x >= lower_[i]); upper_[i] = x; set_max_span(); } inline void set_lower_bound(int i, const FT& x) { CGAL_assertion(i >= 0 && i < D::value); CGAL_assertion(x <= upper_[i]); lower_[i] = x; set_max_span(); } inline void set_max_span() { FT span = upper_[0]-lower_[0]; max_span_coord_ = 0; for (int i = 1; i < D::value; ++i) { FT tmp = upper_[i] - lower_[i]; if (span < tmp) { span = tmp; max_span_coord_ = i; } } } Kd_tree_rectangle(int) : max_span_coord_(0) { lower_.fill(FT(0)); upper_.fill(FT(0)); } Kd_tree_rectangle() : max_span_coord_(-1) {} explicit Kd_tree_rectangle(const Kd_tree_rectangle& r) : lower_(r.lower_), upper_(r.upper_), max_span_coord_(r.max_span_coord_) {} template void update_from_point_pointers(PointPointerIter begin, PointPointerIter end, const Construct_cartesian_const_iterator_d& construct_it ) { if (begin ==end) return; // initialize with values of first point auto bit = construct_it(**begin); for (int i=0; i < D::value; ++i, ++bit) { lower_[i]= *bit; upper_[i]=lower_[i]; } begin++; typedef typename std::iterator_traits::value_type P; std::for_each(begin, end,set_bounds_from_pointer(D::value, &(lower_[0]), &(upper_[0]), construct_it)); set_max_span(); } template // was PointIter Kd_tree_rectangle(int, PointPointerIter begin, PointPointerIter end,const Construct_cartesian_const_iterator_d& construct_it) : max_span_coord_(-1) { update_from_point_pointers(begin,end,construct_it); } inline int max_span_coord() const { return max_span_coord_; } inline FT max_span() const { return upper_[max_span_coord_] - lower_[max_span_coord_]; } inline FT min_coord(int i) const { CGAL_assume(i(s," ")); s << "\n upper: "; for (int j=0; j < D::value; ++j) s << upper_[j] << " "; // std::copy(upper_, upper_ + D, // std::ostream_iterator(s," ")); s << "\n maximum span " << max_span() << " at coordinate " << max_span_coord() << std::endl; return s; } // Splits rectangle by modifying itself to lower half // and returns upper half // Kd_tree_rectangle* void split(Kd_tree_rectangle& r, int d, FT value) { CGAL_assertion(d >= 0 && d < D::value); CGAL_assertion(lower_[d] <= value && value <= upper_[d]); //Kd_tree_rectangle* r = new Kd_tree_rectangle(*this); upper_[d]=value; r.lower_[d]=value; //return r; } int dimension() const { return D::value; } T* lower() {return lower_.data();} T* upper() {return upper_.data();} const T* lower() const {return lower_.data();} const T* upper() const {return upper_.data();} Kd_tree_rectangle& operator=(const Kd_tree_rectangle& r) { CGAL_assertion(dimension() == r.dimension()); if (this != &r) { lower_ = r.lower_; upper_ = r.upper_; set_max_span(); } return *this; } }; // of class Kd_tree_rectangle // Partial specialization for dynamic dimension, which means dimension at runtime template class Kd_tree_rectangle { public: typedef FT_ FT; typedef FT T; private: T* coords_; int dim; int max_span_coord_; public: inline void set_upper_bound(int i, const FT& x) { CGAL_assertion(i >= 0 && i < dim); CGAL_assertion(x >= lower()[i]); upper()[i] = x; set_max_span(); } inline void set_lower_bound(int i, const FT& x) { CGAL_assertion(i >= 0 && i < dim); CGAL_assertion(x <= upper()[i]); lower()[i] = x; set_max_span(); } inline void set_max_span() { FT span = upper()[0]-lower()[0]; max_span_coord_ = 0; for (int i = 1; i < dim; ++i) { FT tmp = upper()[i] - lower()[i]; if (span < tmp) { span = tmp; max_span_coord_ = i; } } } Kd_tree_rectangle(int d) : coords_(new FT[2*d]), dim(d), max_span_coord_(0) { std::fill(coords_, coords_ + 2*dim, FT(0)); } explicit Kd_tree_rectangle(const Kd_tree_rectangle& r) : coords_(new FT[2*r.dim]), dim(r.dim), max_span_coord_(r.max_span_coord_) { std::copy(r.coords_, r.coords_+2*dim, lower()); } template void update_from_point_pointers(PointPointerIter begin, PointPointerIter end, const Construct_cartesian_const_iterator_d& construct_it ) { if (begin ==end) return; // initialize with values of first point typename Construct_cartesian_const_iterator_d::result_type bit = construct_it(**begin); for (int i=0; i < dim; ++i, ++bit) { lower()[i]= *bit; upper()[i]=lower()[i]; } begin++; typedef typename std::iterator_traits::value_type P; std::for_each(begin, end,set_bounds_from_pointer(dim, lower(), upper(),construct_it)); set_max_span(); } template // was PointIter Kd_tree_rectangle(int d, PointPointerIter begin, PointPointerIter end,const Construct_cartesian_const_iterator_d& construct_it) : coords_(new FT[2*d]), dim(d), max_span_coord_(-1) { update_from_point_pointers(begin,end,construct_it); } inline int max_span_coord() const { return max_span_coord_; } inline FT max_span() const { return upper()[max_span_coord_] - lower()[max_span_coord_]; } inline FT min_coord(int i) const { CGAL_assertion(coords_ != nullptr); return lower()[i]; } inline FT max_coord(int i) const { return upper()[i]; } std::ostream& print(std::ostream& s) const { s << "Rectangle dimension = " << dim; s << "\n lower: "; for (int i=0; i < dim; ++i) s << lower()[i] << " "; // std::copy(lower(), lower() + dim, // std::ostream_iterator(s," ")); s << "\n upper: "; for (int j=0; j < dim; ++j) s << upper()[j] << " "; // std::copy(upper(), upper() + dim, // std::ostream_iterator(s," ")); s << "\n maximum span " << max_span() << " at coordinate " << max_span_coord() << std::endl; return s; } // Splits rectangle by modifying itself to lower half // and returns upper half // Kd_tree_rectangle* void split(Kd_tree_rectangle& r, int d, FT value) { CGAL_assertion(d >= 0 && d < dim); CGAL_assertion(lower()[d] <= value && value <= upper()[d]); //Kd_tree_rectangle* r = new Kd_tree_rectangle(*this); upper()[d]=value; r.lower()[d]=value; //return r; } ~Kd_tree_rectangle() { if (dim) { if (coords_) delete [] coords_; } } int dimension() const { return dim; } T* lower() {return coords_;} T* upper() {return coords_ + dim;} const T* lower() const {return coords_;} const T* upper() const {return coords_ + dim;} Kd_tree_rectangle& operator=(const Kd_tree_rectangle& r) { CGAL_assertion(dimension() == r.dimension()); if (this != &r) { std::copy(r.coords_, r.coords_+2*dim, coords_); set_max_span(); } return *this; } }; // of partial specialization of class Kd_tree_rectangle template std::ostream& operator<<(std::ostream& s, const Kd_tree_rectangle& r) { return r.print(s); } } // namespace CGAL #endif // CGAL_KD_TREE_RECTANGLE_H