In file included from /usr/include/boost/range/iterator_range.hpp:13:0,
from /usr/include/boost/range/sub_range.hpp:23,
from test.cc:5:
/usr/include/boost/range/iterator_range_core.hpp: In instantiation of ‘boost::iterator_range<IteratorT>::iterator_range(Iterator, Iterator) [with Iterator = boost::filter_iterator<Container::get_master_components() const::__lambda0, __gnu_cxx::__normal_iterator<const std::shared_ptr<Component>*, std::vector<std::shared_ptr<Component> > > >; IteratorT = __gnu_cxx::__normal_iterator<const std::shared_ptr<Component>*, std::vector<std::shared_ptr<Component> > >]’:
/usr/include/boost/range/sub_range.hpp:88:31: required from ‘boost::sub_range<ForwardRange>::sub_range(Iter, Iter) [with Iter = boost::filter_iterator<Container::get_master_components() const::__lambda0, __gnu_cxx::__normal_iterator<const std::shared_ptr<Component>*, std::vector<std::shared_ptr<Component> > > >; ForwardRange = const std::vector<std::shared_ptr<Component> >]’
test.cc:46:73: required from here
/usr/include/boost/range/iterator_range_core.hpp:180:42: error: no matching function for call to ‘__gnu_cxx::__normal_iterator<const std::shared_ptr<Component>*, std::vector<std::shared_ptr<Component> > >::__normal_iterator(boost::filter_iterator<Container::get_master_components() const::__lambda0, __gnu_cxx::__normal_iterator<const std::shared_ptr<Component>*, std::vector<std::shared_ptr<Component> > > >&)’
m_Begin(Begin), m_End(End)
^
/usr/include/boost/range/iterator_range_core.hpp:180:42: note: candidates are:
In file included from /usr/include/c++/4.8/bits/stl_algobase.h:67:0,
from /usr/include/c++/4.8/bits/char_traits.h:39,
from /usr/include/c++/4.8/ios:40,
from /usr/include/c++/4.8/ostream:38,
from /usr/include/c++/4.8/iostream:39,
from test.cc:1:
/usr/include/c++/4.8/bits/stl_iterator.h:730:9: note: template<class _Iter> __gnu_cxx::__normal_iterator<_Iterator, _Container>::__normal_iterator(const __gnu_cxx::__normal_iterator<_Iter, typename __gnu_cxx::__enable_if<std::__are_same<_Iter, typename _Container::pointer>::__value, _Container>::__type>&)
__normal_iterator(const __normal_iterator<_Iter,
^
/usr/include/c++/4.8/bits/stl_iterator.h:730:9: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/range/iterator_range.hpp:13:0,
from /usr/include/boost/range/sub_range.hpp:23,
from test.cc:5:
/usr/include/boost/range/iterator_range_core.hpp:180:42: note: ‘boost::filter_iterator<Container::get_master_components() const::__lambda0, __gnu_cxx::__normal_iterator<const std::shared_ptr<Component>*, std::vector<std::shared_ptr<Component> > > >’ is not derived from ‘const __gnu_cxx::__normal_iterator<_Iter, typename __gnu_cxx::__enable_if<std::__are_same<_Iter, std::shared_ptr<Component>*>::__value, std::vector<std::shared_ptr<Component> > >::__type>’
m_Begin(Begin), m_End(End)
^
In file included from /usr/include/c++/4.8/bits/stl_algobase.h:67:0,
from /usr/include/c++/4.8/bits/char_traits.h:39,
from /usr/include/c++/4.8/ios:40,
from /usr/include/c++/4.8/ostream:38,
from /usr/include/c++/4.8/iostream:39,
from test.cc:1:
/usr/include/c++/4.8/bits/stl_iterator.h:726:7: note: __gnu_cxx::__normal_iterator<_Iterator, _Container>::__normal_iterator(const _Iterator&) [with _Iterator = const std::shared_ptr<Component>*; _Container = std::vector<std::shared_ptr<Component> >]
__normal_iterator(const _Iterator& __i) : _M_current(__i) { }
^
/usr/include/c++/4.8/bits/stl_iterator.h:726:7: note: no known conversion for argument 1 from ‘boost::filter_iterator<Container::get_master_components() const::__lambda0, __gnu_cxx::__normal_iterator<const std::shared_ptr<Component>*, std::vector<std::shared_ptr<Component> > > >’ to ‘const std::shared_ptr<Component>* const&’
/usr/include/c++/4.8/bits/stl_iterator.h:723:26: note: constexpr __gnu_cxx::__normal_iterator<_Iterator, _Container>::__normal_iterator() [with _Iterator = const std::shared_ptr<Component>*; _Container = std::vector<std::shared_ptr<Component> >]
_GLIBCXX_CONSTEXPR __normal_iterator() : _M_current(_Iterator()) { }
^
/usr/include/c++/4.8/bits/stl_iterator.h:723:26: note: candidate expects 0 arguments, 1 provided
/usr/include/c++/4.8/bits/stl_iterator.h:708:11: note: constexpr __gnu_cxx::__normal_iterator<const std::shared_ptr<Component>*, std::vector<std::shared_ptr<Component> > >::__normal_iterator(const __gnu_cxx::__normal_iterator<const std::shared_ptr<Component>*, std::vector<std::shared_ptr<Component> > >&)
class __normal_iterator
^
/usr/include/c++/4.8/bits/stl_iterator.h:708:11: note: no known conversion for argument 1 from ‘boost::filter_iterator<Container::get_master_components() const::__lambda0, __gnu_cxx::__normal_iterator<const std::shared_ptr<Component>*, std::vector<std::shared_ptr<Component> > > >’ to ‘const __gnu_cxx::__normal_iterator<const std::shared_ptr<Component>*, std::vector<std::shared_ptr<Component> > >&’
/usr/include/c++/4.8/bits/stl_iterator.h:708:11: note: constexpr __gnu_cxx::__normal_iterator<const std::shared_ptr<Component>*, std::vector<std::shared_ptr<Component> > >::__normal_iterator(__gnu_cxx::__normal_iterator<const std::shared_ptr<Component>*, std::vector<std::shared_ptr<Component> > >&&)
/usr/include/c++/4.8/bits/stl_iterator.h:708:11: note: no known conversion for argument 1 from ‘boost::filter_iterator<Container::get_master_components() const::__lambda0, __gnu_cxx::__normal_iterator<const std::shared_ptr<Component>*, std::vector<std::shared_ptr<Component> > > >’ to ‘__gnu_cxx::__normal_iterator<const std::shared_ptr<Component>*, std::vector<std::shared_ptr<Component> > >&&’
In file included from /usr/include/boost/range/iterator_range.hpp:13:0,
from /usr/include/boost/range/sub_range.hpp:23,
from test.cc:5:
/usr/include/boost/range/iterator_range_core.hpp:180:42: error: no matching function for call to ‘__gnu_cxx::__normal_iterator<const std::shared_ptr<Component>*, std::vector<std::shared_ptr<Component> > >::__normal_iterator(boost::filter_iterator<Container::get_master_components() const::__lambda0, __gnu_cxx::__normal_iterator<const std::shared_ptr<Component>*, std::vector<std::shared_ptr<Component> > > >&)’
m_Begin(Begin), m_End(End)
^
/usr/include/boost/range/iterator_range_core.hpp:180:42: note: candidates are:
In file included from /usr/include/c++/4.8/bits/stl_algobase.h:67:0,
from /usr/include/c++/4.8/bits/char_traits.h:39,
from /usr/include/c++/4.8/ios:40,
from /usr/include/c++/4.8/ostream:38,
from /usr/include/c++/4.8/iostream:39,
from test.cc:1:
/usr/include/c++/4.8/bits/stl_iterator.h:730:9: note: template<class _Iter> __gnu_cxx::__normal_iterator<_Iterator, _Container>::__normal_iterator(const __gnu_cxx::__normal_iterator<_Iter, typename __gnu_cxx::__enable_if<std::__are_same<_Iter, typename _Container::pointer>::__value, _Container>::__type>&)
__normal_iterator(const __normal_iterator<_Iter,
^
/usr/include/c++/4.8/bits/stl_iterator.h:730:9: note: template argument deduction/substitution failed:
In file included from /usr/include/boost/range/iterator_range.hpp:13:0,
from /usr/include/boost/range/sub_range.hpp:23,
from test.cc:5:
/usr/include/boost/range/iterator_range_core.hpp:180:42: note: ‘boost::filter_iterator<Container::get_master_components() const::__lambda0, __gnu_cxx::__normal_iterator<const std::shared_ptr<Component>*, std::vector<std::shared_ptr<Component> > > >’ is not derived from ‘const __gnu_cxx::__normal_iterator<_Iter, typename __gnu_cxx::__enable_if<std::__are_same<_Iter, std::shared_ptr<Component>*>::__value, std::vector<std::shared_ptr<Component> > >::__type>’
m_Begin(Begin), m_End(End)
^
In file included from /usr/include/c++/4.8/bits/stl_algobase.h:67:0,
from /usr/include/c++/4.8/bits/char_traits.h:39,
from /usr/include/c++/4.8/ios:40,
from /usr/include/c++/4.8/ostream:38,
from /usr/include/c++/4.8/iostream:39,
from test.cc:1:
/usr/include/c++/4.8/bits/stl_iterator.h:726:7: note: __gnu_cxx::__normal_iterator<_Iterator, _Container>::__normal_iterator(const _Iterator&) [with _Iterator = const std::shared_ptr<Component>*; _Container = std::vector<std::shared_ptr<Component> >]
__normal_iterator(const _Iterator& __i) : _M_current(__i) { }
^
/usr/include/c++/4.8/bits/stl_iterator.h:726:7: note: no known conversion for argument 1 from ‘boost::filter_iterator<Container::get_master_components() const::__lambda0, __gnu_cxx::__normal_iterator<const std::shared_ptr<Component>*, std::vector<std::shared_ptr<Component> > > >’ to ‘const std::shared_ptr<Component>* const&’
/usr/include/c++/4.8/bits/stl_iterator.h:723:26: note: constexpr __gnu_cxx::__normal_iterator<_Iterator, _Container>::__normal_iterator() [with _Iterator = const std::shared_ptr<Component>*; _Container = std::vector<std::shared_ptr<Component> >]
_GLIBCXX_CONSTEXPR __normal_iterator() : _M_current(_Iterator()) { }
^
/usr/include/c++/4.8/bits/stl_iterator.h:723:26: note: candidate expects 0 arguments, 1 provided
/usr/include/c++/4.8/bits/stl_iterator.h:708:11: note: constexpr __gnu_cxx::__normal_iterator<const std::shared_ptr<Component>*, std::vector<std::shared_ptr<Component> > >::__normal_iterator(const __gnu_cxx::__normal_iterator<const std::shared_ptr<Component>*, std::vector<std::shared_ptr<Component> > >&)
class __normal_iterator
^
/usr/include/c++/4.8/bits/stl_iterator.h:708:11: note: no known conversion for argument 1 from ‘boost::filter_iterator<Container::get_master_components() const::__lambda0, __gnu_cxx::__normal_iterator<const std::shared_ptr<Component>*, std::vector<std::shared_ptr<Component> > > >’ to ‘const __gnu_cxx::__normal_iterator<const std::shared_ptr<Component>*, std::vector<std::shared_ptr<Component> > >&’
/usr/include/c++/4.8/bits/stl_iterator.h:708:11: note: constexpr __gnu_cxx::__normal_iterator<const std::shared_ptr<Component>*, std::vector<std::shared_ptr<Component> > >::__normal_iterator(__gnu_cxx::__normal_iterator<const std::shared_ptr<Component>*, std::vector<std::shared_ptr<Component> > >&&)
/usr/include/c++/4.8/bits/stl_iterator.h:708:11: note: no known conversion for argument 1 from ‘boost::filter_iterator<Container::get_master_components() const::__lambda0, __gnu_cxx::__normal_iterator<const std::shared_ptr<Component>*, std::vector<std::shared_ptr<Component> > > >’ to ‘__gnu_cxx::__normal_iterator<const std::shared_ptr<Component>*, std::vector<std::shared_ptr<Component> > >&&’
SW4gZmlsZSBpbmNsdWRlZCBmcm9tIC91c3IvaW5jbHVkZS9ib29zdC9yYW5nZS9pdGVyYXRvcl9yYW5nZS5ocHA6MTM6MCwKICAgICAgICAgICAgICAgICBmcm9tIC91c3IvaW5jbHVkZS9ib29zdC9yYW5nZS9zdWJfcmFuZ2UuaHBwOjIzLAogICAgICAgICAgICAgICAgIGZyb20gdGVzdC5jYzo1OgovdXNyL2luY2x1ZGUvYm9vc3QvcmFuZ2UvaXRlcmF0b3JfcmFuZ2VfY29yZS5ocHA6IEluIGluc3RhbnRpYXRpb24gb2Yg4oCYYm9vc3Q6Oml0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yVD46Oml0ZXJhdG9yX3JhbmdlKEl0ZXJhdG9yLCBJdGVyYXRvcikgW3dpdGggSXRlcmF0b3IgPSBib29zdDo6ZmlsdGVyX2l0ZXJhdG9yPENvbnRhaW5lcjo6Z2V0X21hc3Rlcl9jb21wb25lbnRzKCkgY29uc3Q6Ol9fbGFtYmRhMCwgX19nbnVfY3h4OjpfX25vcm1hbF9pdGVyYXRvcjxjb25zdCBzdGQ6OnNoYXJlZF9wdHI8Q29tcG9uZW50PiosIHN0ZDo6dmVjdG9yPHN0ZDo6c2hhcmVkX3B0cjxDb21wb25lbnQ+ID4gPiA+OyBJdGVyYXRvclQgPSBfX2dudV9jeHg6Ol9fbm9ybWFsX2l0ZXJhdG9yPGNvbnN0IHN0ZDo6c2hhcmVkX3B0cjxDb21wb25lbnQ+Kiwgc3RkOjp2ZWN0b3I8c3RkOjpzaGFyZWRfcHRyPENvbXBvbmVudD4gPiA+XeKAmToKL3Vzci9pbmNsdWRlL2Jvb3N0L3JhbmdlL3N1Yl9yYW5nZS5ocHA6ODg6MzE6ICAgcmVxdWlyZWQgZnJvbSDigJhib29zdDo6c3ViX3JhbmdlPEZvcndhcmRSYW5nZT46OnN1Yl9yYW5nZShJdGVyLCBJdGVyKSBbd2l0aCBJdGVyID0gYm9vc3Q6OmZpbHRlcl9pdGVyYXRvcjxDb250YWluZXI6OmdldF9tYXN0ZXJfY29tcG9uZW50cygpIGNvbnN0OjpfX2xhbWJkYTAsIF9fZ251X2N4eDo6X19ub3JtYWxfaXRlcmF0b3I8Y29uc3Qgc3RkOjpzaGFyZWRfcHRyPENvbXBvbmVudD4qLCBzdGQ6OnZlY3RvcjxzdGQ6OnNoYXJlZF9wdHI8Q29tcG9uZW50PiA+ID4gPjsgRm9yd2FyZFJhbmdlID0gY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzaGFyZWRfcHRyPENvbXBvbmVudD4gPl3igJkKdGVzdC5jYzo0Njo3MzogICByZXF1aXJlZCBmcm9tIGhlcmUKL3Vzci9pbmNsdWRlL2Jvb3N0L3JhbmdlL2l0ZXJhdG9yX3JhbmdlX2NvcmUuaHBwOjE4MDo0MjogZXJyb3I6IG5vIG1hdGNoaW5nIGZ1bmN0aW9uIGZvciBjYWxsIHRvIOKAmF9fZ251X2N4eDo6X19ub3JtYWxfaXRlcmF0b3I8Y29uc3Qgc3RkOjpzaGFyZWRfcHRyPENvbXBvbmVudD4qLCBzdGQ6OnZlY3RvcjxzdGQ6OnNoYXJlZF9wdHI8Q29tcG9uZW50PiA+ID46Ol9fbm9ybWFsX2l0ZXJhdG9yKGJvb3N0OjpmaWx0ZXJfaXRlcmF0b3I8Q29udGFpbmVyOjpnZXRfbWFzdGVyX2NvbXBvbmVudHMoKSBjb25zdDo6X19sYW1iZGEwLCBfX2dudV9jeHg6Ol9fbm9ybWFsX2l0ZXJhdG9yPGNvbnN0IHN0ZDo6c2hhcmVkX3B0cjxDb21wb25lbnQ+Kiwgc3RkOjp2ZWN0b3I8c3RkOjpzaGFyZWRfcHRyPENvbXBvbmVudD4gPiA+ID4mKeKAmQogICAgICAgICAgICAgICAgIG1fQmVnaW4oQmVnaW4pLCBtX0VuZChFbmQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KL3Vzci9pbmNsdWRlL2Jvb3N0L3JhbmdlL2l0ZXJhdG9yX3JhbmdlX2NvcmUuaHBwOjE4MDo0Mjogbm90ZTogY2FuZGlkYXRlcyBhcmU6CkluIGZpbGUgaW5jbHVkZWQgZnJvbSAvdXNyL2luY2x1ZGUvYysrLzQuOC9iaXRzL3N0bF9hbGdvYmFzZS5oOjY3OjAsCiAgICAgICAgICAgICAgICAgZnJvbSAvdXNyL2luY2x1ZGUvYysrLzQuOC9iaXRzL2NoYXJfdHJhaXRzLmg6MzksCiAgICAgICAgICAgICAgICAgZnJvbSAvdXNyL2luY2x1ZGUvYysrLzQuOC9pb3M6NDAsCiAgICAgICAgICAgICAgICAgZnJvbSAvdXNyL2luY2x1ZGUvYysrLzQuOC9vc3RyZWFtOjM4LAogICAgICAgICAgICAgICAgIGZyb20gL3Vzci9pbmNsdWRlL2MrKy80LjgvaW9zdHJlYW06MzksCiAgICAgICAgICAgICAgICAgZnJvbSB0ZXN0LmNjOjE6Ci91c3IvaW5jbHVkZS9jKysvNC44L2JpdHMvc3RsX2l0ZXJhdG9yLmg6NzMwOjk6IG5vdGU6IHRlbXBsYXRlPGNsYXNzIF9JdGVyPiBfX2dudV9jeHg6Ol9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVyYXRvciwgX0NvbnRhaW5lcj46Ol9fbm9ybWFsX2l0ZXJhdG9yKGNvbnN0IF9fZ251X2N4eDo6X19ub3JtYWxfaXRlcmF0b3I8X0l0ZXIsIHR5cGVuYW1lIF9fZ251X2N4eDo6X19lbmFibGVfaWY8c3RkOjpfX2FyZV9zYW1lPF9JdGVyLCB0eXBlbmFtZSBfQ29udGFpbmVyOjpwb2ludGVyPjo6X192YWx1ZSwgX0NvbnRhaW5lcj46Ol9fdHlwZT4mKQogICAgICAgICBfX25vcm1hbF9pdGVyYXRvcihjb25zdCBfX25vcm1hbF9pdGVyYXRvcjxfSXRlciwKICAgICAgICAgXgovdXNyL2luY2x1ZGUvYysrLzQuOC9iaXRzL3N0bF9pdGVyYXRvci5oOjczMDo5OiBub3RlOiAgIHRlbXBsYXRlIGFyZ3VtZW50IGRlZHVjdGlvbi9zdWJzdGl0dXRpb24gZmFpbGVkOgpJbiBmaWxlIGluY2x1ZGVkIGZyb20gL3Vzci9pbmNsdWRlL2Jvb3N0L3JhbmdlL2l0ZXJhdG9yX3JhbmdlLmhwcDoxMzowLAogICAgICAgICAgICAgICAgIGZyb20gL3Vzci9pbmNsdWRlL2Jvb3N0L3JhbmdlL3N1Yl9yYW5nZS5ocHA6MjMsCiAgICAgICAgICAgICAgICAgZnJvbSB0ZXN0LmNjOjU6Ci91c3IvaW5jbHVkZS9ib29zdC9yYW5nZS9pdGVyYXRvcl9yYW5nZV9jb3JlLmhwcDoxODA6NDI6IG5vdGU6ICAg4oCYYm9vc3Q6OmZpbHRlcl9pdGVyYXRvcjxDb250YWluZXI6OmdldF9tYXN0ZXJfY29tcG9uZW50cygpIGNvbnN0OjpfX2xhbWJkYTAsIF9fZ251X2N4eDo6X19ub3JtYWxfaXRlcmF0b3I8Y29uc3Qgc3RkOjpzaGFyZWRfcHRyPENvbXBvbmVudD4qLCBzdGQ6OnZlY3RvcjxzdGQ6OnNoYXJlZF9wdHI8Q29tcG9uZW50PiA+ID4gPuKAmSBpcyBub3QgZGVyaXZlZCBmcm9tIOKAmGNvbnN0IF9fZ251X2N4eDo6X19ub3JtYWxfaXRlcmF0b3I8X0l0ZXIsIHR5cGVuYW1lIF9fZ251X2N4eDo6X19lbmFibGVfaWY8c3RkOjpfX2FyZV9zYW1lPF9JdGVyLCBzdGQ6OnNoYXJlZF9wdHI8Q29tcG9uZW50Pio+OjpfX3ZhbHVlLCBzdGQ6OnZlY3RvcjxzdGQ6OnNoYXJlZF9wdHI8Q29tcG9uZW50PiA+ID46Ol9fdHlwZT7igJkKICAgICAgICAgICAgICAgICBtX0JlZ2luKEJlZ2luKSwgbV9FbmQoRW5kKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCkluIGZpbGUgaW5jbHVkZWQgZnJvbSAvdXNyL2luY2x1ZGUvYysrLzQuOC9iaXRzL3N0bF9hbGdvYmFzZS5oOjY3OjAsCiAgICAgICAgICAgICAgICAgZnJvbSAvdXNyL2luY2x1ZGUvYysrLzQuOC9iaXRzL2NoYXJfdHJhaXRzLmg6MzksCiAgICAgICAgICAgICAgICAgZnJvbSAvdXNyL2luY2x1ZGUvYysrLzQuOC9pb3M6NDAsCiAgICAgICAgICAgICAgICAgZnJvbSAvdXNyL2luY2x1ZGUvYysrLzQuOC9vc3RyZWFtOjM4LAogICAgICAgICAgICAgICAgIGZyb20gL3Vzci9pbmNsdWRlL2MrKy80LjgvaW9zdHJlYW06MzksCiAgICAgICAgICAgICAgICAgZnJvbSB0ZXN0LmNjOjE6Ci91c3IvaW5jbHVkZS9jKysvNC44L2JpdHMvc3RsX2l0ZXJhdG9yLmg6NzI2Ojc6IG5vdGU6IF9fZ251X2N4eDo6X19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJhdG9yLCBfQ29udGFpbmVyPjo6X19ub3JtYWxfaXRlcmF0b3IoY29uc3QgX0l0ZXJhdG9yJikgW3dpdGggX0l0ZXJhdG9yID0gY29uc3Qgc3RkOjpzaGFyZWRfcHRyPENvbXBvbmVudD4qOyBfQ29udGFpbmVyID0gc3RkOjp2ZWN0b3I8c3RkOjpzaGFyZWRfcHRyPENvbXBvbmVudD4gPl0KICAgICAgIF9fbm9ybWFsX2l0ZXJhdG9yKGNvbnN0IF9JdGVyYXRvciYgX19pKSA6IF9NX2N1cnJlbnQoX19pKSB7IH0KICAgICAgIF4KL3Vzci9pbmNsdWRlL2MrKy80LjgvYml0cy9zdGxfaXRlcmF0b3IuaDo3MjY6Nzogbm90ZTogICBubyBrbm93biBjb252ZXJzaW9uIGZvciBhcmd1bWVudCAxIGZyb20g4oCYYm9vc3Q6OmZpbHRlcl9pdGVyYXRvcjxDb250YWluZXI6OmdldF9tYXN0ZXJfY29tcG9uZW50cygpIGNvbnN0OjpfX2xhbWJkYTAsIF9fZ251X2N4eDo6X19ub3JtYWxfaXRlcmF0b3I8Y29uc3Qgc3RkOjpzaGFyZWRfcHRyPENvbXBvbmVudD4qLCBzdGQ6OnZlY3RvcjxzdGQ6OnNoYXJlZF9wdHI8Q29tcG9uZW50PiA+ID4gPuKAmSB0byDigJhjb25zdCBzdGQ6OnNoYXJlZF9wdHI8Q29tcG9uZW50PiogY29uc3Qm4oCZCi91c3IvaW5jbHVkZS9jKysvNC44L2JpdHMvc3RsX2l0ZXJhdG9yLmg6NzIzOjI2OiBub3RlOiBjb25zdGV4cHIgX19nbnVfY3h4OjpfX25vcm1hbF9pdGVyYXRvcjxfSXRlcmF0b3IsIF9Db250YWluZXI+OjpfX25vcm1hbF9pdGVyYXRvcigpIFt3aXRoIF9JdGVyYXRvciA9IGNvbnN0IHN0ZDo6c2hhcmVkX3B0cjxDb21wb25lbnQ+KjsgX0NvbnRhaW5lciA9IHN0ZDo6dmVjdG9yPHN0ZDo6c2hhcmVkX3B0cjxDb21wb25lbnQ+ID5dCiAgICAgICBfR0xJQkNYWF9DT05TVEVYUFIgX19ub3JtYWxfaXRlcmF0b3IoKSA6IF9NX2N1cnJlbnQoX0l0ZXJhdG9yKCkpIHsgfQogICAgICAgICAgICAgICAgICAgICAgICAgIF4KL3Vzci9pbmNsdWRlL2MrKy80LjgvYml0cy9zdGxfaXRlcmF0b3IuaDo3MjM6MjY6IG5vdGU6ICAgY2FuZGlkYXRlIGV4cGVjdHMgMCBhcmd1bWVudHMsIDEgcHJvdmlkZWQKL3Vzci9pbmNsdWRlL2MrKy80LjgvYml0cy9zdGxfaXRlcmF0b3IuaDo3MDg6MTE6IG5vdGU6IGNvbnN0ZXhwciBfX2dudV9jeHg6Ol9fbm9ybWFsX2l0ZXJhdG9yPGNvbnN0IHN0ZDo6c2hhcmVkX3B0cjxDb21wb25lbnQ+Kiwgc3RkOjp2ZWN0b3I8c3RkOjpzaGFyZWRfcHRyPENvbXBvbmVudD4gPiA+OjpfX25vcm1hbF9pdGVyYXRvcihjb25zdCBfX2dudV9jeHg6Ol9fbm9ybWFsX2l0ZXJhdG9yPGNvbnN0IHN0ZDo6c2hhcmVkX3B0cjxDb21wb25lbnQ+Kiwgc3RkOjp2ZWN0b3I8c3RkOjpzaGFyZWRfcHRyPENvbXBvbmVudD4gPiA+JikKICAgICBjbGFzcyBfX25vcm1hbF9pdGVyYXRvcgogICAgICAgICAgIF4KL3Vzci9pbmNsdWRlL2MrKy80LjgvYml0cy9zdGxfaXRlcmF0b3IuaDo3MDg6MTE6IG5vdGU6ICAgbm8ga25vd24gY29udmVyc2lvbiBmb3IgYXJndW1lbnQgMSBmcm9tIOKAmGJvb3N0OjpmaWx0ZXJfaXRlcmF0b3I8Q29udGFpbmVyOjpnZXRfbWFzdGVyX2NvbXBvbmVudHMoKSBjb25zdDo6X19sYW1iZGEwLCBfX2dudV9jeHg6Ol9fbm9ybWFsX2l0ZXJhdG9yPGNvbnN0IHN0ZDo6c2hhcmVkX3B0cjxDb21wb25lbnQ+Kiwgc3RkOjp2ZWN0b3I8c3RkOjpzaGFyZWRfcHRyPENvbXBvbmVudD4gPiA+ID7igJkgdG8g4oCYY29uc3QgX19nbnVfY3h4OjpfX25vcm1hbF9pdGVyYXRvcjxjb25zdCBzdGQ6OnNoYXJlZF9wdHI8Q29tcG9uZW50PiosIHN0ZDo6dmVjdG9yPHN0ZDo6c2hhcmVkX3B0cjxDb21wb25lbnQ+ID4gPibigJkKL3Vzci9pbmNsdWRlL2MrKy80LjgvYml0cy9zdGxfaXRlcmF0b3IuaDo3MDg6MTE6IG5vdGU6IGNvbnN0ZXhwciBfX2dudV9jeHg6Ol9fbm9ybWFsX2l0ZXJhdG9yPGNvbnN0IHN0ZDo6c2hhcmVkX3B0cjxDb21wb25lbnQ+Kiwgc3RkOjp2ZWN0b3I8c3RkOjpzaGFyZWRfcHRyPENvbXBvbmVudD4gPiA+OjpfX25vcm1hbF9pdGVyYXRvcihfX2dudV9jeHg6Ol9fbm9ybWFsX2l0ZXJhdG9yPGNvbnN0IHN0ZDo6c2hhcmVkX3B0cjxDb21wb25lbnQ+Kiwgc3RkOjp2ZWN0b3I8c3RkOjpzaGFyZWRfcHRyPENvbXBvbmVudD4gPiA+JiYpCi91c3IvaW5jbHVkZS9jKysvNC44L2JpdHMvc3RsX2l0ZXJhdG9yLmg6NzA4OjExOiBub3RlOiAgIG5vIGtub3duIGNvbnZlcnNpb24gZm9yIGFyZ3VtZW50IDEgZnJvbSDigJhib29zdDo6ZmlsdGVyX2l0ZXJhdG9yPENvbnRhaW5lcjo6Z2V0X21hc3Rlcl9jb21wb25lbnRzKCkgY29uc3Q6Ol9fbGFtYmRhMCwgX19nbnVfY3h4OjpfX25vcm1hbF9pdGVyYXRvcjxjb25zdCBzdGQ6OnNoYXJlZF9wdHI8Q29tcG9uZW50PiosIHN0ZDo6dmVjdG9yPHN0ZDo6c2hhcmVkX3B0cjxDb21wb25lbnQ+ID4gPiA+4oCZIHRvIOKAmF9fZ251X2N4eDo6X19ub3JtYWxfaXRlcmF0b3I8Y29uc3Qgc3RkOjpzaGFyZWRfcHRyPENvbXBvbmVudD4qLCBzdGQ6OnZlY3RvcjxzdGQ6OnNoYXJlZF9wdHI8Q29tcG9uZW50PiA+ID4mJuKAmQpJbiBmaWxlIGluY2x1ZGVkIGZyb20gL3Vzci9pbmNsdWRlL2Jvb3N0L3JhbmdlL2l0ZXJhdG9yX3JhbmdlLmhwcDoxMzowLAogICAgICAgICAgICAgICAgIGZyb20gL3Vzci9pbmNsdWRlL2Jvb3N0L3JhbmdlL3N1Yl9yYW5nZS5ocHA6MjMsCiAgICAgICAgICAgICAgICAgZnJvbSB0ZXN0LmNjOjU6Ci91c3IvaW5jbHVkZS9ib29zdC9yYW5nZS9pdGVyYXRvcl9yYW5nZV9jb3JlLmhwcDoxODA6NDI6IGVycm9yOiBubyBtYXRjaGluZyBmdW5jdGlvbiBmb3IgY2FsbCB0byDigJhfX2dudV9jeHg6Ol9fbm9ybWFsX2l0ZXJhdG9yPGNvbnN0IHN0ZDo6c2hhcmVkX3B0cjxDb21wb25lbnQ+Kiwgc3RkOjp2ZWN0b3I8c3RkOjpzaGFyZWRfcHRyPENvbXBvbmVudD4gPiA+OjpfX25vcm1hbF9pdGVyYXRvcihib29zdDo6ZmlsdGVyX2l0ZXJhdG9yPENvbnRhaW5lcjo6Z2V0X21hc3Rlcl9jb21wb25lbnRzKCkgY29uc3Q6Ol9fbGFtYmRhMCwgX19nbnVfY3h4OjpfX25vcm1hbF9pdGVyYXRvcjxjb25zdCBzdGQ6OnNoYXJlZF9wdHI8Q29tcG9uZW50PiosIHN0ZDo6dmVjdG9yPHN0ZDo6c2hhcmVkX3B0cjxDb21wb25lbnQ+ID4gPiA+JinigJkKICAgICAgICAgICAgICAgICBtX0JlZ2luKEJlZ2luKSwgbV9FbmQoRW5kKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCi91c3IvaW5jbHVkZS9ib29zdC9yYW5nZS9pdGVyYXRvcl9yYW5nZV9jb3JlLmhwcDoxODA6NDI6IG5vdGU6IGNhbmRpZGF0ZXMgYXJlOgpJbiBmaWxlIGluY2x1ZGVkIGZyb20gL3Vzci9pbmNsdWRlL2MrKy80LjgvYml0cy9zdGxfYWxnb2Jhc2UuaDo2NzowLAogICAgICAgICAgICAgICAgIGZyb20gL3Vzci9pbmNsdWRlL2MrKy80LjgvYml0cy9jaGFyX3RyYWl0cy5oOjM5LAogICAgICAgICAgICAgICAgIGZyb20gL3Vzci9pbmNsdWRlL2MrKy80LjgvaW9zOjQwLAogICAgICAgICAgICAgICAgIGZyb20gL3Vzci9pbmNsdWRlL2MrKy80Ljgvb3N0cmVhbTozOCwKICAgICAgICAgICAgICAgICBmcm9tIC91c3IvaW5jbHVkZS9jKysvNC44L2lvc3RyZWFtOjM5LAogICAgICAgICAgICAgICAgIGZyb20gdGVzdC5jYzoxOgovdXNyL2luY2x1ZGUvYysrLzQuOC9iaXRzL3N0bF9pdGVyYXRvci5oOjczMDo5OiBub3RlOiB0ZW1wbGF0ZTxjbGFzcyBfSXRlcj4gX19nbnVfY3h4OjpfX25vcm1hbF9pdGVyYXRvcjxfSXRlcmF0b3IsIF9Db250YWluZXI+OjpfX25vcm1hbF9pdGVyYXRvcihjb25zdCBfX2dudV9jeHg6Ol9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVyLCB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fZW5hYmxlX2lmPHN0ZDo6X19hcmVfc2FtZTxfSXRlciwgdHlwZW5hbWUgX0NvbnRhaW5lcjo6cG9pbnRlcj46Ol9fdmFsdWUsIF9Db250YWluZXI+OjpfX3R5cGU+JikKICAgICAgICAgX19ub3JtYWxfaXRlcmF0b3IoY29uc3QgX19ub3JtYWxfaXRlcmF0b3I8X0l0ZXIsCiAgICAgICAgIF4KL3Vzci9pbmNsdWRlL2MrKy80LjgvYml0cy9zdGxfaXRlcmF0b3IuaDo3MzA6OTogbm90ZTogICB0ZW1wbGF0ZSBhcmd1bWVudCBkZWR1Y3Rpb24vc3Vic3RpdHV0aW9uIGZhaWxlZDoKSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC91c3IvaW5jbHVkZS9ib29zdC9yYW5nZS9pdGVyYXRvcl9yYW5nZS5ocHA6MTM6MCwKICAgICAgICAgICAgICAgICBmcm9tIC91c3IvaW5jbHVkZS9ib29zdC9yYW5nZS9zdWJfcmFuZ2UuaHBwOjIzLAogICAgICAgICAgICAgICAgIGZyb20gdGVzdC5jYzo1OgovdXNyL2luY2x1ZGUvYm9vc3QvcmFuZ2UvaXRlcmF0b3JfcmFuZ2VfY29yZS5ocHA6MTgwOjQyOiBub3RlOiAgIOKAmGJvb3N0OjpmaWx0ZXJfaXRlcmF0b3I8Q29udGFpbmVyOjpnZXRfbWFzdGVyX2NvbXBvbmVudHMoKSBjb25zdDo6X19sYW1iZGEwLCBfX2dudV9jeHg6Ol9fbm9ybWFsX2l0ZXJhdG9yPGNvbnN0IHN0ZDo6c2hhcmVkX3B0cjxDb21wb25lbnQ+Kiwgc3RkOjp2ZWN0b3I8c3RkOjpzaGFyZWRfcHRyPENvbXBvbmVudD4gPiA+ID7igJkgaXMgbm90IGRlcml2ZWQgZnJvbSDigJhjb25zdCBfX2dudV9jeHg6Ol9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVyLCB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fZW5hYmxlX2lmPHN0ZDo6X19hcmVfc2FtZTxfSXRlciwgc3RkOjpzaGFyZWRfcHRyPENvbXBvbmVudD4qPjo6X192YWx1ZSwgc3RkOjp2ZWN0b3I8c3RkOjpzaGFyZWRfcHRyPENvbXBvbmVudD4gPiA+OjpfX3R5cGU+4oCZCiAgICAgICAgICAgICAgICAgbV9CZWdpbihCZWdpbiksIG1fRW5kKEVuZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgpJbiBmaWxlIGluY2x1ZGVkIGZyb20gL3Vzci9pbmNsdWRlL2MrKy80LjgvYml0cy9zdGxfYWxnb2Jhc2UuaDo2NzowLAogICAgICAgICAgICAgICAgIGZyb20gL3Vzci9pbmNsdWRlL2MrKy80LjgvYml0cy9jaGFyX3RyYWl0cy5oOjM5LAogICAgICAgICAgICAgICAgIGZyb20gL3Vzci9pbmNsdWRlL2MrKy80LjgvaW9zOjQwLAogICAgICAgICAgICAgICAgIGZyb20gL3Vzci9pbmNsdWRlL2MrKy80Ljgvb3N0cmVhbTozOCwKICAgICAgICAgICAgICAgICBmcm9tIC91c3IvaW5jbHVkZS9jKysvNC44L2lvc3RyZWFtOjM5LAogICAgICAgICAgICAgICAgIGZyb20gdGVzdC5jYzoxOgovdXNyL2luY2x1ZGUvYysrLzQuOC9iaXRzL3N0bF9pdGVyYXRvci5oOjcyNjo3OiBub3RlOiBfX2dudV9jeHg6Ol9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVyYXRvciwgX0NvbnRhaW5lcj46Ol9fbm9ybWFsX2l0ZXJhdG9yKGNvbnN0IF9JdGVyYXRvciYpIFt3aXRoIF9JdGVyYXRvciA9IGNvbnN0IHN0ZDo6c2hhcmVkX3B0cjxDb21wb25lbnQ+KjsgX0NvbnRhaW5lciA9IHN0ZDo6dmVjdG9yPHN0ZDo6c2hhcmVkX3B0cjxDb21wb25lbnQ+ID5dCiAgICAgICBfX25vcm1hbF9pdGVyYXRvcihjb25zdCBfSXRlcmF0b3ImIF9faSkgOiBfTV9jdXJyZW50KF9faSkgeyB9CiAgICAgICBeCi91c3IvaW5jbHVkZS9jKysvNC44L2JpdHMvc3RsX2l0ZXJhdG9yLmg6NzI2Ojc6IG5vdGU6ICAgbm8ga25vd24gY29udmVyc2lvbiBmb3IgYXJndW1lbnQgMSBmcm9tIOKAmGJvb3N0OjpmaWx0ZXJfaXRlcmF0b3I8Q29udGFpbmVyOjpnZXRfbWFzdGVyX2NvbXBvbmVudHMoKSBjb25zdDo6X19sYW1iZGEwLCBfX2dudV9jeHg6Ol9fbm9ybWFsX2l0ZXJhdG9yPGNvbnN0IHN0ZDo6c2hhcmVkX3B0cjxDb21wb25lbnQ+Kiwgc3RkOjp2ZWN0b3I8c3RkOjpzaGFyZWRfcHRyPENvbXBvbmVudD4gPiA+ID7igJkgdG8g4oCYY29uc3Qgc3RkOjpzaGFyZWRfcHRyPENvbXBvbmVudD4qIGNvbnN0JuKAmQovdXNyL2luY2x1ZGUvYysrLzQuOC9iaXRzL3N0bF9pdGVyYXRvci5oOjcyMzoyNjogbm90ZTogY29uc3RleHByIF9fZ251X2N4eDo6X19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJhdG9yLCBfQ29udGFpbmVyPjo6X19ub3JtYWxfaXRlcmF0b3IoKSBbd2l0aCBfSXRlcmF0b3IgPSBjb25zdCBzdGQ6OnNoYXJlZF9wdHI8Q29tcG9uZW50Pio7IF9Db250YWluZXIgPSBzdGQ6OnZlY3RvcjxzdGQ6OnNoYXJlZF9wdHI8Q29tcG9uZW50PiA+XQogICAgICAgX0dMSUJDWFhfQ09OU1RFWFBSIF9fbm9ybWFsX2l0ZXJhdG9yKCkgOiBfTV9jdXJyZW50KF9JdGVyYXRvcigpKSB7IH0KICAgICAgICAgICAgICAgICAgICAgICAgICBeCi91c3IvaW5jbHVkZS9jKysvNC44L2JpdHMvc3RsX2l0ZXJhdG9yLmg6NzIzOjI2OiBub3RlOiAgIGNhbmRpZGF0ZSBleHBlY3RzIDAgYXJndW1lbnRzLCAxIHByb3ZpZGVkCi91c3IvaW5jbHVkZS9jKysvNC44L2JpdHMvc3RsX2l0ZXJhdG9yLmg6NzA4OjExOiBub3RlOiBjb25zdGV4cHIgX19nbnVfY3h4OjpfX25vcm1hbF9pdGVyYXRvcjxjb25zdCBzdGQ6OnNoYXJlZF9wdHI8Q29tcG9uZW50PiosIHN0ZDo6dmVjdG9yPHN0ZDo6c2hhcmVkX3B0cjxDb21wb25lbnQ+ID4gPjo6X19ub3JtYWxfaXRlcmF0b3IoY29uc3QgX19nbnVfY3h4OjpfX25vcm1hbF9pdGVyYXRvcjxjb25zdCBzdGQ6OnNoYXJlZF9wdHI8Q29tcG9uZW50PiosIHN0ZDo6dmVjdG9yPHN0ZDo6c2hhcmVkX3B0cjxDb21wb25lbnQ+ID4gPiYpCiAgICAgY2xhc3MgX19ub3JtYWxfaXRlcmF0b3IKICAgICAgICAgICBeCi91c3IvaW5jbHVkZS9jKysvNC44L2JpdHMvc3RsX2l0ZXJhdG9yLmg6NzA4OjExOiBub3RlOiAgIG5vIGtub3duIGNvbnZlcnNpb24gZm9yIGFyZ3VtZW50IDEgZnJvbSDigJhib29zdDo6ZmlsdGVyX2l0ZXJhdG9yPENvbnRhaW5lcjo6Z2V0X21hc3Rlcl9jb21wb25lbnRzKCkgY29uc3Q6Ol9fbGFtYmRhMCwgX19nbnVfY3h4OjpfX25vcm1hbF9pdGVyYXRvcjxjb25zdCBzdGQ6OnNoYXJlZF9wdHI8Q29tcG9uZW50PiosIHN0ZDo6dmVjdG9yPHN0ZDo6c2hhcmVkX3B0cjxDb21wb25lbnQ+ID4gPiA+4oCZIHRvIOKAmGNvbnN0IF9fZ251X2N4eDo6X19ub3JtYWxfaXRlcmF0b3I8Y29uc3Qgc3RkOjpzaGFyZWRfcHRyPENvbXBvbmVudD4qLCBzdGQ6OnZlY3RvcjxzdGQ6OnNoYXJlZF9wdHI8Q29tcG9uZW50PiA+ID4m4oCZCi91c3IvaW5jbHVkZS9jKysvNC44L2JpdHMvc3RsX2l0ZXJhdG9yLmg6NzA4OjExOiBub3RlOiBjb25zdGV4cHIgX19nbnVfY3h4OjpfX25vcm1hbF9pdGVyYXRvcjxjb25zdCBzdGQ6OnNoYXJlZF9wdHI8Q29tcG9uZW50PiosIHN0ZDo6dmVjdG9yPHN0ZDo6c2hhcmVkX3B0cjxDb21wb25lbnQ+ID4gPjo6X19ub3JtYWxfaXRlcmF0b3IoX19nbnVfY3h4OjpfX25vcm1hbF9pdGVyYXRvcjxjb25zdCBzdGQ6OnNoYXJlZF9wdHI8Q29tcG9uZW50PiosIHN0ZDo6dmVjdG9yPHN0ZDo6c2hhcmVkX3B0cjxDb21wb25lbnQ+ID4gPiYmKQovdXNyL2luY2x1ZGUvYysrLzQuOC9iaXRzL3N0bF9pdGVyYXRvci5oOjcwODoxMTogbm90ZTogICBubyBrbm93biBjb252ZXJzaW9uIGZvciBhcmd1bWVudCAxIGZyb20g4oCYYm9vc3Q6OmZpbHRlcl9pdGVyYXRvcjxDb250YWluZXI6OmdldF9tYXN0ZXJfY29tcG9uZW50cygpIGNvbnN0OjpfX2xhbWJkYTAsIF9fZ251X2N4eDo6X19ub3JtYWxfaXRlcmF0b3I8Y29uc3Qgc3RkOjpzaGFyZWRfcHRyPENvbXBvbmVudD4qLCBzdGQ6OnZlY3RvcjxzdGQ6OnNoYXJlZF9wdHI8Q29tcG9uZW50PiA+ID4gPuKAmSB0byDigJhfX2dudV9jeHg6Ol9fbm9ybWFsX2l0ZXJhdG9yPGNvbnN0IHN0ZDo6c2hhcmVkX3B0cjxDb21wb25lbnQ+Kiwgc3RkOjp2ZWN0b3I8c3RkOjpzaGFyZWRfcHRyPENvbXBvbmVudD4gPiA+JibigJk=