#if (defined(USE_UIKIT_PUBLIC_HEADERS) && USE_UIKIT_PUBLIC_HEADERS) || !__has_include(<UIKitCore/UIDevice.h>)
//
//  UIDevice.h
//  UIKit
//
//  Copyright (c) 2007-2018 Apple Inc. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <UIKit/UIKitDefines.h>

NS_ASSUME_NONNULL_BEGIN

typedef NS_ENUM(NSInteger, UIDeviceOrientation) {
    UIDeviceOrientationUnknown,
    UIDeviceOrientationPortrait,            // Device oriented vertically, home button on the bottom
    UIDeviceOrientationPortraitUpsideDown,  // Device oriented vertically, home button on the top
    UIDeviceOrientationLandscapeLeft,       // Device oriented horizontally, home button on the right
    UIDeviceOrientationLandscapeRight,      // Device oriented horizontally, home button on the left
    UIDeviceOrientationFaceUp,              // Device oriented flat, face up
    UIDeviceOrientationFaceDown             // Device oriented flat, face down
} API_UNAVAILABLE(tvos);

typedef NS_ENUM(NSInteger, UIDeviceBatteryState) {
    UIDeviceBatteryStateUnknown,
    UIDeviceBatteryStateUnplugged,   // on battery, discharging
    UIDeviceBatteryStateCharging,    // plugged in, less than 100%
    UIDeviceBatteryStateFull,        // plugged in, at 100%
} API_UNAVAILABLE(tvos);              // available in iPhone 3.0

typedef NS_ENUM(NSInteger, UIUserInterfaceIdiom) {
    UIUserInterfaceIdiomUnspecified = -1,
    UIUserInterfaceIdiomPhone API_AVAILABLE(ios(3.2)), // iPhone and iPod touch style UI
    UIUserInterfaceIdiomPad API_AVAILABLE(ios(3.2)), // iPad style UI
    UIUserInterfaceIdiomTV API_AVAILABLE(ios(9.0)), // Apple TV style UI
    UIUserInterfaceIdiomCarPlay API_AVAILABLE(ios(9.0)), // CarPlay style UI
};

static inline BOOL UIDeviceOrientationIsPortrait(UIDeviceOrientation orientation)  API_UNAVAILABLE(tvos) {
    return ((orientation) == UIDeviceOrientationPortrait || (orientation) == UIDeviceOrientationPortraitUpsideDown);
}

static inline BOOL UIDeviceOrientationIsLandscape(UIDeviceOrientation orientation)  API_UNAVAILABLE(tvos) {
    return ((orientation) == UIDeviceOrientationLandscapeLeft || (orientation) == UIDeviceOrientationLandscapeRight);
}

static inline __attribute__((always_inline)) BOOL UIDeviceOrientationIsFlat(UIDeviceOrientation orientation)  API_UNAVAILABLE(tvos) {
    return ((orientation) == UIDeviceOrientationFaceUp || (orientation) == UIDeviceOrientationFaceDown);
}

static inline __attribute__((always_inline)) BOOL UIDeviceOrientationIsValidInterfaceOrientation(UIDeviceOrientation orientation)  API_UNAVAILABLE(tvos) {
    return ((orientation) == UIDeviceOrientationPortrait || (orientation) == UIDeviceOrientationPortraitUpsideDown || (orientation) == UIDeviceOrientationLandscapeLeft || (orientation) == UIDeviceOrientationLandscapeRight);
}

UIKIT_EXTERN API_AVAILABLE(ios(2.0)) @interface UIDevice : NSObject

@property(class, nonatomic, readonly) UIDevice *currentDevice;

@property(nonatomic,readonly,strong) NSString    *name;              // e.g. "My iPhone"
@property(nonatomic,readonly,strong) NSString    *model;             // e.g. @"iPhone", @"iPod touch"
@property(nonatomic,readonly,strong) NSString    *localizedModel;    // localized version of model
@property(nonatomic,readonly,strong) NSString    *systemName;        // e.g. @"iOS"
@property(nonatomic,readonly,strong) NSString    *systemVersion;     // e.g. @"4.0"
@property(nonatomic,readonly) UIDeviceOrientation orientation API_UNAVAILABLE(tvos);       // return current device orientation.  this will return UIDeviceOrientationUnknown unless device orientation notifications are being generated.

@property(nullable, nonatomic,readonly,strong) NSUUID      *identifierForVendor API_AVAILABLE(ios(6.0));      // a UUID that may be used to uniquely identify the device, same across apps from a single vendor.

@property(nonatomic,readonly,getter=isGeneratingDeviceOrientationNotifications) BOOL generatesDeviceOrientationNotifications API_UNAVAILABLE(tvos);
- (void)beginGeneratingDeviceOrientationNotifications API_UNAVAILABLE(tvos);      // nestable
- (void)endGeneratingDeviceOrientationNotifications API_UNAVAILABLE(tvos);

@property(nonatomic,getter=isBatteryMonitoringEnabled) BOOL batteryMonitoringEnabled API_AVAILABLE(ios(3.0)) API_UNAVAILABLE(tvos);  // default is NO
@property(nonatomic,readonly) UIDeviceBatteryState          batteryState API_AVAILABLE(ios(3.0)) API_UNAVAILABLE(tvos);  // UIDeviceBatteryStateUnknown if monitoring disabled
@property(nonatomic,readonly) float                         batteryLevel API_AVAILABLE(ios(3.0)) API_UNAVAILABLE(tvos);  // 0 .. 1.0. -1.0 if UIDeviceBatteryStateUnknown

@property(nonatomic,getter=isProximityMonitoringEnabled) BOOL proximityMonitoringEnabled API_AVAILABLE(ios(3.0)); // default is NO
@property(nonatomic,readonly)                            BOOL proximityState API_AVAILABLE(ios(3.0));  // always returns NO if no proximity detector

@property(nonatomic,readonly,getter=isMultitaskingSupported) BOOL multitaskingSupported API_AVAILABLE(ios(4.0));

@property(nonatomic,readonly) UIUserInterfaceIdiom userInterfaceIdiom API_AVAILABLE(ios(3.2));

- (void)playInputClick API_AVAILABLE(ios(4.2));  // Plays a click only if an enabling input view is on-screen and user has enabled input clicks.

@end

@protocol UIInputViewAudioFeedback <NSObject>
@optional

@property (nonatomic, readonly) BOOL enableInputClicksWhenVisible; // If YES, an input view will enable playInputClick.

@end

/* The UI_USER_INTERFACE_IDIOM() function is provided for use when deploying to a version of the iOS less than 3.2. If the earliest version of iPhone/iOS that you will be deploying for is 3.2 or greater, you may use -[UIDevice userInterfaceIdiom] directly.
 */
static inline UIUserInterfaceIdiom UI_USER_INTERFACE_IDIOM() API_DEPRECATED("Use -[UIDevice userInterfaceIdiom] directly.", ios(2.0, 13.0), tvos(9.0, 11.0)) {
    return ([[UIDevice currentDevice] respondsToSelector:@selector(userInterfaceIdiom)] ?
            [[UIDevice currentDevice] userInterfaceIdiom] :
            UIUserInterfaceIdiomPhone);
}

UIKIT_EXTERN NSNotificationName const UIDeviceOrientationDidChangeNotification API_UNAVAILABLE(tvos);
UIKIT_EXTERN NSNotificationName const UIDeviceBatteryStateDidChangeNotification   API_AVAILABLE(ios(3.0)) API_UNAVAILABLE(tvos);
UIKIT_EXTERN NSNotificationName const UIDeviceBatteryLevelDidChangeNotification   API_AVAILABLE(ios(3.0)) API_UNAVAILABLE(tvos);
UIKIT_EXTERN NSNotificationName const UIDeviceProximityStateDidChangeNotification API_AVAILABLE(ios(3.0));

NS_ASSUME_NONNULL_END

#else
#import <UIKitCore/UIDevice.h>
#endif

{'repo_name': 'xybp888/iOS-SDKs', 'stars': '139', 'repo_language': 'Objective-C', 'file_name': 'PassKit.tbd', 'mime_type': 'text/plain', 'hash': -3019943368189647915, 'source_dataset': 'data'}


data "aws_availability_zones" "available" {}

resource "aws_vpc" "main" {
  cidr_block = "192.168.0.0/16"

  tags = {
    name        = "main"
    environment = "${var.environment}"
  }
}

{'repo_name': 'secdevops-cuse/CyberRange', 'stars': '234', 'repo_language': 'HCL', 'file_name': 'config.yml', 'mime_type': 'text/plain', 'hash': 73128301798974877, 'source_dataset': 'data'}


//! Provides types and functions for fetching and unpacking a Node installation
//! zip file in Windows operating systems.

use std::fs::{create_dir_all, File};
use std::io::copy;
use std::path::Path;

use crate::ArchiveError;
use progress_read::ProgressRead;
use verbatim::PathExt;
use zip_rs::ZipArchive;

use super::Archive;
use super::Origin;

pub struct Zip {
    compressed_size: u64,
    data: File,
    origin: Origin,
}

impl Zip {
    /// Loads a cached Node zip archive from the specified file.
    pub fn load(source: File) -> Result<Box<dyn Archive>, ArchiveError> {
        let compressed_size = source.metadata()?.len();

        Ok(Box::new(Zip {
            compressed_size,
            data: source,
            origin: Origin::Local,
        }))
    }

    /// Initiate fetching of a Node zip archive from the given URL, returning
    /// a `Remote` data source.
    pub fn fetch(url: &str, cache_file: &Path) -> Result<Box<dyn Archive>, ArchiveError> {
        let mut response = reqwest::blocking::get(url)?;

        if !response.status().is_success() {
            return Err(ArchiveError::HttpError(response.status()));
        }

        {
            let mut file = File::create(cache_file)?;
            copy(&mut response, &mut file)?;
        }

        let file = File::open(cache_file)?;
        let compressed_size = file.metadata()?.len();

        Ok(Box::new(Zip {
            compressed_size,
            data: file,
            origin: Origin::Remote,
        }))
    }
}

impl Archive for Zip {
    fn compressed_size(&self) -> u64 {
        self.compressed_size
    }
    fn uncompressed_size(&self) -> Option<u64> {
        None
    }
    fn unpack(
        self: Box<Self>,
        dest: &Path,
        progress: &mut dyn FnMut(&(), usize),
    ) -> Result<(), ArchiveError> {
        // Use a verbatim path to avoid the legacy Windows 260 byte path limit.
        let dest: &Path = &dest.to_verbatim();

        let mut zip = ZipArchive::new(ProgressRead::new(self.data, (), progress))?;
        for i in 0..zip.len() {
            let mut entry = zip.by_index(i)?;

            let (is_dir, subpath) = {
                let name = entry.name();

                // Verbatim paths aren't normalized so we have to use correct r"\" separators.
                (
                    name.ends_with('/'),
                    Path::new(&name.replace('/', r"\")).to_path_buf(),
                )
            };

            if is_dir {
                create_dir_all(dest.join(subpath))?;
            } else {
                let mut file = {
                    if let Some(basedir) = subpath.parent() {
                        create_dir_all(dest.join(basedir))?;
                    }
                    File::create(dest.join(subpath))?
                };
                copy(&mut entry, &mut file)?;
            }
        }
        Ok(())
    }
    fn origin(&self) -> Origin {
        self.origin
    }
}

#[cfg(test)]
pub mod tests {

    use crate::zip::Zip;
    use std::fs::File;
    use std::path::PathBuf;

    fn fixture_path(fixture_dir: &str) -> PathBuf {
        let mut cargo_manifest_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
        cargo_manifest_dir.push("fixtures");
        cargo_manifest_dir.push(fixture_dir);
        cargo_manifest_dir
    }

    #[test]
    fn test_load() {
        let mut test_file_path = fixture_path("zips");
        test_file_path.push("test-file.zip");
        let test_file = File::open(test_file_path).expect("Couldn't open test file");
        let zip = Zip::load(test_file).expect("Failed to load zip file");

        assert_eq!(zip.compressed_size(), 214);
    }
}

{'repo_name': 'volta-cli/volta', 'stars': '1478', 'repo_language': 'Rust', 'file_name': 'shim.cmd', 'mime_type': 'text/x-msdos-batch', 'hash': 1576543627318313811, 'source_dataset': 'data'}


// Profiling map implementation -*- C++ -*-

// Copyright (C) 2009-2013 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library.  This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.

// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING3.  If not see
// <http://www.gnu.org/licenses/>.

/** @file profile/map.h
 *  This file is a GNU profile extension to the Standard C++ Library.
 */

#ifndef _GLIBCXX_PROFILE_MAP_H
#define _GLIBCXX_PROFILE_MAP_H 1

#include <utility>
#include <profile/base.h>

namespace std _GLIBCXX_VISIBILITY(default)
{
namespace __profile
{
  /// Class std::map wrapper with performance instrumentation.
  template<typename _Key, typename _Tp, typename _Compare = std::less<_Key>,
	   typename _Allocator = std::allocator<std::pair<const _Key, _Tp> > >
    class map
    : public _GLIBCXX_STD_C::map<_Key, _Tp, _Compare, _Allocator>
    {
      typedef _GLIBCXX_STD_C::map<_Key, _Tp, _Compare, _Allocator> _Base;

    public:
      // types:
      typedef _Key                                  key_type;
      typedef _Tp                                   mapped_type;
      typedef std::pair<const _Key, _Tp>            value_type;
      typedef _Compare                              key_compare;
      typedef _Allocator                            allocator_type;
      typedef typename _Base::reference             reference;
      typedef typename _Base::const_reference       const_reference;

      typedef typename _Base::iterator       iterator;
      typedef typename _Base::const_iterator       const_iterator;
      typedef typename _Base::size_type             size_type;
      typedef typename _Base::difference_type       difference_type;
      typedef typename _Base::pointer               pointer;
      typedef typename _Base::const_pointer         const_pointer;
      typedef std::reverse_iterator<iterator>       reverse_iterator;
      typedef std::reverse_iterator<const_iterator> const_reverse_iterator;

      // 23.3.1.1 construct/copy/destroy:
      explicit
      map(const _Compare& __comp = _Compare(),
	  const _Allocator& __a = _Allocator())
      : _Base(__comp, __a)
      { __profcxx_map_to_unordered_map_construct(this); }

#if __cplusplus >= 201103L
      template<typename _InputIterator,
	       typename = std::_RequireInputIter<_InputIterator>>
#else
      template<typename _InputIterator>
#endif
        map(_InputIterator __first, _InputIterator __last,
	    const _Compare& __comp = _Compare(),
	    const _Allocator& __a = _Allocator())
	: _Base(__first, __last, __comp, __a)
        { __profcxx_map_to_unordered_map_construct(this); }

      map(const map& __x)
      : _Base(__x)
      { __profcxx_map_to_unordered_map_construct(this); }

      map(const _Base& __x)
      : _Base(__x)
      { __profcxx_map_to_unordered_map_construct(this); }

#if __cplusplus >= 201103L
      map(map&& __x)
      noexcept(is_nothrow_copy_constructible<_Compare>::value)
      : _Base(std::move(__x))
      { }

      map(initializer_list<value_type> __l,
	  const _Compare& __c = _Compare(),
	  const allocator_type& __a = allocator_type())
      : _Base(__l, __c, __a) { }
#endif

      ~map() _GLIBCXX_NOEXCEPT
      { __profcxx_map_to_unordered_map_destruct(this); }

      map&
      operator=(const map& __x)
      {
	*static_cast<_Base*>(this) = __x;
	return *this;
      }

#if __cplusplus >= 201103L
      map&
      operator=(map&& __x)
      {
	// NB: DR 1204.
	// NB: DR 675.
	this->clear();
	this->swap(__x);
	return *this;
      }

      map&
      operator=(initializer_list<value_type> __l)
      {
	this->clear();
	this->insert(__l);
	return *this;
      }
#endif

      // _GLIBCXX_RESOLVE_LIB_DEFECTS
      // 133. map missing get_allocator()
      using _Base::get_allocator;

      // iterators:
      iterator
      begin() _GLIBCXX_NOEXCEPT
      { return _Base::begin(); }

      const_iterator
      begin() const _GLIBCXX_NOEXCEPT
      { return _Base::begin(); }

      iterator
      end() _GLIBCXX_NOEXCEPT
      { return _Base::end(); }

      const_iterator
      end() const _GLIBCXX_NOEXCEPT
      { return _Base::end(); }

      reverse_iterator
      rbegin() _GLIBCXX_NOEXCEPT
      {
        __profcxx_map_to_unordered_map_invalidate(this);
        return reverse_iterator(end());
      }

      const_reverse_iterator
      rbegin() const _GLIBCXX_NOEXCEPT
      {
        __profcxx_map_to_unordered_map_invalidate(this);
        return const_reverse_iterator(end());
      }

      reverse_iterator
      rend() _GLIBCXX_NOEXCEPT
      {
        __profcxx_map_to_unordered_map_invalidate(this);
        return reverse_iterator(begin());
      }

      const_reverse_iterator
      rend() const _GLIBCXX_NOEXCEPT
      {
        __profcxx_map_to_unordered_map_invalidate(this);
        return const_reverse_iterator(begin());
      }

#if __cplusplus >= 201103L
      const_iterator
      cbegin() const noexcept
      { return const_iterator(_Base::begin()); }

      const_iterator
      cend() const noexcept
      { return const_iterator(_Base::end()); }

      const_reverse_iterator
      crbegin() const noexcept
      {
        __profcxx_map_to_unordered_map_invalidate(this);
        return const_reverse_iterator(end());
      }

      const_reverse_iterator
      crend() const noexcept
      {
        __profcxx_map_to_unordered_map_invalidate(this);
        return const_reverse_iterator(begin());
      }
#endif

      // capacity:
      using _Base::empty;
      using _Base::size;
      using _Base::max_size;

      // 23.3.1.2 element access:
      mapped_type&
      operator[](const key_type& __k)
      {
        __profcxx_map_to_unordered_map_find(this, size());
        return _Base::operator[](__k);
      }

#if __cplusplus >= 201103L
      mapped_type&
      operator[](key_type&& __k)
      {
        __profcxx_map_to_unordered_map_find(this, size());
        return _Base::operator[](std::move(__k));
      }
#endif

      mapped_type&
      at(const key_type& __k)
      {
        __profcxx_map_to_unordered_map_find(this, size());
        return _Base::at(__k);
      }

      const mapped_type&
      at(const key_type& __k) const
      {
        __profcxx_map_to_unordered_map_find(this, size());
        return _Base::at(__k);
      }

      // modifiers:
#if __cplusplus >= 201103L
      template<typename... _Args>
	std::pair<iterator, bool>
	emplace(_Args&&... __args)
	{
	  __profcxx_map_to_unordered_map_insert(this, size(), 1);
	  auto __res = _Base::emplace(std::forward<_Args>(__args)...);
	  return std::pair<iterator, bool>(iterator(__res.first),
					   __res.second);
	}

      template<typename... _Args>
	iterator
	emplace_hint(const_iterator __pos, _Args&&... __args)
	{
	  size_type size_before = size();
	  auto __res = _Base::emplace_hint(__pos,
					   std::forward<_Args>(__args)...);
	  __profcxx_map_to_unordered_map_insert(this, size_before,
						size() - size_before);
	  return __res;
	}
#endif

      std::pair<iterator, bool>
      insert(const value_type& __x)
      {
        __profcxx_map_to_unordered_map_insert(this, size(), 1);
	typedef typename _Base::iterator _Base_iterator;
	std::pair<_Base_iterator, bool> __res = _Base::insert(__x);
	return std::pair<iterator, bool>(iterator(__res.first),
					 __res.second);
      }

#if __cplusplus >= 201103L
      template<typename _Pair, typename = typename
	       std::enable_if<std::is_constructible<value_type,
						    _Pair&&>::value>::type>
        std::pair<iterator, bool>
        insert(_Pair&& __x)
        {
	  __profcxx_map_to_unordered_map_insert(this, size(), 1);
	  typedef typename _Base::iterator _Base_iterator;
	  std::pair<_Base_iterator, bool> __res
	    = _Base::insert(std::forward<_Pair>(__x));
	  return std::pair<iterator, bool>(iterator(__res.first),
					   __res.second);
	}
#endif

#if __cplusplus >= 201103L
      void
      insert(std::initializer_list<value_type> __list)
      {
        size_type size_before = size();
        _Base::insert(__list);
        __profcxx_map_to_unordered_map_insert(this, size_before,
					      size() - size_before);
      }
#endif

      iterator
#if __cplusplus >= 201103L
      insert(const_iterator __position, const value_type& __x)
#else
      insert(iterator __position, const value_type& __x)
#endif
      {
        size_type size_before = size();
	iterator __i = iterator(_Base::insert(__position, __x));
        __profcxx_map_to_unordered_map_insert(this, size_before,
					      size() - size_before);
	return __i;
      }

#if __cplusplus >= 201103L
      template<typename _Pair, typename = typename
	       std::enable_if<std::is_constructible<value_type,
						    _Pair&&>::value>::type>
        iterator
        insert(const_iterator __position, _Pair&& __x)
        {
	  size_type size_before = size();
	  iterator __i
	    = iterator(_Base::insert(__position, std::forward<_Pair>(__x)));
	  __profcxx_map_to_unordered_map_insert(this, size_before,
						size() - size_before);
	  return __i;
      }
#endif

#if __cplusplus >= 201103L
      template<typename _InputIterator,
	       typename = std::_RequireInputIter<_InputIterator>>
#else
      template<typename _InputIterator>
#endif
        void
        insert(_InputIterator __first, _InputIterator __last)
        {
          size_type size_before = size();
	  _Base::insert(__first, __last);
          __profcxx_map_to_unordered_map_insert(this, size_before,
                                                size() - size_before);
	}

#if __cplusplus >= 201103L
      iterator
      erase(const_iterator __position)
      {
	iterator __i = _Base::erase(__position);
        __profcxx_map_to_unordered_map_erase(this, size(), 1);
        return __i;
      }

      iterator
      erase(iterator __position)
      { return erase(const_iterator(__position)); }
#else
      void
      erase(iterator __position)
      {
	_Base::erase(__position);
        __profcxx_map_to_unordered_map_erase(this, size(), 1);
      }
#endif

      size_type
      erase(const key_type& __x)
      {
	iterator __victim = find(__x);
	if (__victim == end())
	  return 0;
	else
	{
	  _Base::erase(__victim);
	  return 1;
	}
      }

#if __cplusplus >= 201103L
      iterator
      erase(const_iterator __first, const_iterator __last)
      { return iterator(_Base::erase(__first, __last)); }
#else
      void
      erase(iterator __first, iterator __last)
      { _Base::erase(__first, __last); }
#endif

      void
      swap(map& __x)
      { _Base::swap(__x); }

      void
      clear() _GLIBCXX_NOEXCEPT
      { this->erase(begin(), end()); }

      // observers:
      using _Base::key_comp;
      using _Base::value_comp;

      // 23.3.1.3 map operations:
      iterator
      find(const key_type& __x)
      {
        __profcxx_map_to_unordered_map_find(this, size());
        return iterator(_Base::find(__x));
      }

      const_iterator
      find(const key_type& __x) const
      {
        __profcxx_map_to_unordered_map_find(this, size());
        return const_iterator(_Base::find(__x));
      }

      size_type
      count(const key_type& __x) const
      {
        __profcxx_map_to_unordered_map_find(this, size());
        return _Base::count(__x);
      }

      iterator
      lower_bound(const key_type& __x)
      {
        __profcxx_map_to_unordered_map_invalidate(this);
        return iterator(_Base::lower_bound(__x));
      }

      const_iterator
      lower_bound(const key_type& __x) const
      {
        __profcxx_map_to_unordered_map_invalidate(this);
        return const_iterator(_Base::lower_bound(__x));
      }

      iterator
      upper_bound(const key_type& __x)
      {
        __profcxx_map_to_unordered_map_invalidate(this);
        return iterator(_Base::upper_bound(__x));
      }

      const_iterator
      upper_bound(const key_type& __x) const
      {
        __profcxx_map_to_unordered_map_invalidate(this);
        return const_iterator(_Base::upper_bound(__x));
      }

      std::pair<iterator,iterator>
      equal_range(const key_type& __x)
      {
	typedef typename _Base::iterator _Base_iterator;
	std::pair<_Base_iterator, _Base_iterator> __res =
	_Base::equal_range(__x);
	return std::make_pair(iterator(__res.first),
			      iterator(__res.second));
      }

      std::pair<const_iterator,const_iterator>
      equal_range(const key_type& __x) const
      {
        __profcxx_map_to_unordered_map_find(this, size());
	typedef typename _Base::const_iterator _Base_const_iterator;
	std::pair<_Base_const_iterator, _Base_const_iterator> __res =
	_Base::equal_range(__x);
	return std::make_pair(const_iterator(__res.first),
			      const_iterator(__res.second));
      }

      _Base&
      _M_base() _GLIBCXX_NOEXCEPT       { return *this; }

      const _Base&
      _M_base() const _GLIBCXX_NOEXCEPT { return *this; }

    };

  template<typename _Key, typename _Tp,
	   typename _Compare, typename _Allocator>
    inline bool
    operator==(const map<_Key, _Tp, _Compare, _Allocator>& __lhs,
	       const map<_Key, _Tp, _Compare, _Allocator>& __rhs)
    {
      __profcxx_map_to_unordered_map_invalidate(&__lhs);
      __profcxx_map_to_unordered_map_invalidate(&__rhs);
      return __lhs._M_base() == __rhs._M_base();
    }

  template<typename _Key, typename _Tp,
	   typename _Compare, typename _Allocator>
    inline bool
    operator!=(const map<_Key, _Tp, _Compare, _Allocator>& __lhs,
	       const map<_Key, _Tp, _Compare, _Allocator>& __rhs)
    {
      __profcxx_map_to_unordered_map_invalidate(&__lhs);
      __profcxx_map_to_unordered_map_invalidate(&__rhs);
      return __lhs._M_base() != __rhs._M_base();
    }

  template<typename _Key, typename _Tp,
	   typename _Compare, typename _Allocator>
    inline bool
    operator<(const map<_Key, _Tp, _Compare, _Allocator>& __lhs,
	      const map<_Key, _Tp, _Compare, _Allocator>& __rhs)
    {
      __profcxx_map_to_unordered_map_invalidate(&__lhs);
      __profcxx_map_to_unordered_map_invalidate(&__rhs);
      return __lhs._M_base() < __rhs._M_base();
    }

  template<typename _Key, typename _Tp,
	   typename _Compare, typename _Allocator>
    inline bool
    operator<=(const map<_Key, _Tp, _Compare, _Allocator>& __lhs,
	       const map<_Key, _Tp, _Compare, _Allocator>& __rhs)
    {
      __profcxx_map_to_unordered_map_invalidate(&__lhs);
      __profcxx_map_to_unordered_map_invalidate(&__rhs);
      return __lhs._M_base() <= __rhs._M_base();
    }

  template<typename _Key, typename _Tp,
	   typename _Compare, typename _Allocator>
    inline bool
    operator>=(const map<_Key, _Tp, _Compare, _Allocator>& __lhs,
	       const map<_Key, _Tp, _Compare, _Allocator>& __rhs)
    {
      __profcxx_map_to_unordered_map_invalidate(&__lhs);
      __profcxx_map_to_unordered_map_invalidate(&__rhs);
      return __lhs._M_base() >= __rhs._M_base();
    }

  template<typename _Key, typename _Tp,
	   typename _Compare, typename _Allocator>
    inline bool
    operator>(const map<_Key, _Tp, _Compare, _Allocator>& __lhs,
	      const map<_Key, _Tp, _Compare, _Allocator>& __rhs)
    {
      __profcxx_map_to_unordered_map_invalidate(&__lhs);
      __profcxx_map_to_unordered_map_invalidate(&__rhs);
      return __lhs._M_base() > __rhs._M_base();
    }

  template<typename _Key, typename _Tp,
	   typename _Compare, typename _Allocator>
    inline void
    swap(map<_Key, _Tp, _Compare, _Allocator>& __lhs,
	 map<_Key, _Tp, _Compare, _Allocator>& __rhs)
    { __lhs.swap(__rhs); }

} // namespace __profile
} // namespace std

#endif

{'repo_name': 'dutor/stl', 'stars': '146', 'repo_language': 'C++', 'file_name': 'stl_map.h', 'mime_type': 'text/x-c++', 'hash': -5046730067455853795, 'source_dataset': 'data'}


<?xml version="1.0" encoding="ISO-8859-1"?>

<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:context="http://www.springframework.org/schema/context"
  xmlns:tx="http://www.springframework.org/schema/tx"
  xmlns:util="http://www.springframework.org/schema/util"
  xmlns:p="http://www.springframework.org/schema/p"
  xmlns:c="http://www.springframework.org/schema/c"
  xmlns:permazen="http://permazen.io/schema/spring/permazen"
  xsi:schemaLocation="
   http://www.springframework.org/schema/beans
     http://www.springframework.org/schema/beans/spring-beans.xsd
   http://www.springframework.org/schema/context
     http://www.springframework.org/schema/context/spring-context.xsd
   http://www.springframework.org/schema/tx
     http://www.springframework.org/schema/tx/spring-tx.xsd
   http://www.springframework.org/schema/util
     http://www.springframework.org/schema/util/spring-util.xsd
   http://permazen.io/schema/spring/permazen
     http://permazen.github.io/permazen/permazen-spring/src/main/resources/io/permazen/spring/permazen-1.0.xsd">

    <!-- Activate Spring annotation support -->
    <context:annotation-config/>

    <!-- Activate @Configurable -->
    <context:spring-configured/>

    <!-- Substitute ${properties.like.this} in this application context -->
    <context:property-placeholder/>

    <!-- Expose the command line Main object so we can access its properties -->
    <bean id="permazenGuiMain" class="io.permazen.vaadin.app.Main" factory-method="getInstance"/>

    <!-- Get Permazen database from Main object -->
    <bean id="permazenGuiPermazen" factory-bean="permazenGuiMain" factory-method="getPermazen"/>

    <!-- Define TransactionManager -->
    <bean id="permazenGuiTransactionManager" class="io.permazen.spring.PermazenTransactionManager"
      p:permazen-ref="permazenGuiPermazen">
        <property name="allowNewSchema">
            <bean factory-bean="permazenGuiMain" factory-method="isAllowNewSchema"/>
        </property>
    </bean>

    <!-- Activate @Transactional -->
    <tx:annotation-driven transaction-manager="permazenGuiTransactionManager" mode="aspectj"/>

    <!-- Activate @RetryTransaction -->
    <bean class="org.dellroad.stuff.spring.RetryTransactionAspect" factory-method="aspectOf"
      p:maxRetriesDefault="5" p:initialDelayDefault="25" p:maximumDelayDefault="1000">
        <property name="persistenceExceptionTranslator">
            <bean class="io.permazen.spring.PermazenExceptionTranslator"/>
        </property>
    </bean>

</beans>

{'repo_name': 'permazen/permazen', 'stars': '259', 'repo_language': 'HTML', 'file_name': 'spotbugs-exclude.xml', 'mime_type': 'text/plain', 'hash': -8766192236640426332, 'source_dataset': 'data'}


/****************************************************************
 * Licensed to the Apache Software Foundation (ASF) under one   *
 * or more contributor license agreements.  See the NOTICE file *
 * distributed with this work for additional information        *
 * regarding copyright ownership.  The ASF licenses this file   *
 * to you under the Apache License, Version 2.0 (the            *
 * "License"); you may not use this file except in compliance   *
 * with the License.  You may obtain a copy of the License at   *
 *                                                              *
 *   http://www.apache.org/licenses/LICENSE-2.0                 *
 *                                                              *
 * Unless required by applicable law or agreed to in writing,   *
 * software distributed under the License is distributed on an  *
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
 * KIND, either express or implied.  See the License for the    *
 * specific language governing permissions and limitations      *
 * under the License.                                           *
 ****************************************************************/
package org.apache.james.protocols.smtp.core;

import java.io.Closeable;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;

import javax.inject.Inject;

import org.apache.commons.configuration2.Configuration;
import org.apache.commons.configuration2.ex.ConfigurationException;
import org.apache.james.core.MailAddress;
import org.apache.james.core.MaybeSender;
import org.apache.james.metrics.api.MetricFactory;
import org.apache.james.metrics.api.TimeMetric;
import org.apache.james.protocols.api.ProtocolSession;
import org.apache.james.protocols.api.Request;
import org.apache.james.protocols.api.Response;
import org.apache.james.protocols.api.handler.CommandHandler;
import org.apache.james.protocols.api.handler.ExtensibleHandler;
import org.apache.james.protocols.api.handler.LineHandler;
import org.apache.james.protocols.api.handler.WiringException;
import org.apache.james.protocols.smtp.MailEnvelope;
import org.apache.james.protocols.smtp.MailEnvelopeImpl;
import org.apache.james.protocols.smtp.SMTPResponse;
import org.apache.james.protocols.smtp.SMTPRetCode;
import org.apache.james.protocols.smtp.SMTPSession;
import org.apache.james.protocols.smtp.dsn.DSNStatus;
import org.apache.james.util.MDCBuilder;

import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;

/**
 * handles DATA command
 */
public class DataCmdHandler implements CommandHandler<SMTPSession>, ExtensibleHandler {

    private static final Response NO_RECIPIENT = new SMTPResponse(SMTPRetCode.BAD_SEQUENCE, DSNStatus.getStatus(DSNStatus.PERMANENT,DSNStatus.DELIVERY_OTHER) + " No recipients specified").immutable();
    private static final Response NO_SENDER = new SMTPResponse(SMTPRetCode.BAD_SEQUENCE, DSNStatus.getStatus(DSNStatus.PERMANENT,DSNStatus.DELIVERY_OTHER) + " No sender specified").immutable();
    private static final Response UNEXPECTED_ARG = new SMTPResponse(SMTPRetCode.SYNTAX_ERROR_COMMAND_UNRECOGNIZED, DSNStatus.getStatus(DSNStatus.PERMANENT,DSNStatus.DELIVERY_INVALID_ARG) + " Unexpected argument provided with DATA command").immutable();
    private static final Response DATA_READY = new SMTPResponse(SMTPRetCode.DATA_READY, "Ok Send data ending with <CRLF>.<CRLF>").immutable();
    private static final Collection<String> COMMANDS = ImmutableSet.of("DATA");

    public static final class DataConsumerLineHandler implements LineHandler<SMTPSession> {

        @Override
        public SMTPResponse onLine(SMTPSession session, ByteBuffer line) {
            // Discard everything until the end of DATA session
            if (line.remaining() == 3 && line.get() == 46) {
                session.popLineHandler();
            }
            return null;
        }

        @Override
        public void init(Configuration config) throws ConfigurationException {

        }

        @Override
        public void destroy() {

        }
    }

    public static final class DataLineFilterWrapper implements LineHandler<SMTPSession> {

        private final DataLineFilter filter;
        private final LineHandler<SMTPSession> next;

        public DataLineFilterWrapper(DataLineFilter filter, LineHandler<SMTPSession> next) {
            this.filter = filter;
            this.next = next;
        }

        @Override
        public Response onLine(SMTPSession session, ByteBuffer line) {
            line.rewind();
            return filter.onLine(session, line, next);
        }

        @Override
        public void init(Configuration config) throws ConfigurationException {

        }

        @Override
        public void destroy() {

        }
    }

    public static final ProtocolSession.AttachmentKey<MailEnvelope> MAILENV = ProtocolSession.AttachmentKey.of("MAILENV", MailEnvelope.class);

    private final MetricFactory metricFactory;

    @Inject
    public DataCmdHandler(MetricFactory metricFactory) {
        this.metricFactory = metricFactory;
    }

    private LineHandler<SMTPSession> lineHandler;

    /**
     * process DATA command
     */
    @Override
    public Response onCommand(SMTPSession session, Request request) {
        TimeMetric timeMetric = metricFactory.timer("SMTP-" + request.getCommand());
        session.stopDetectingCommandInjection();
        try (Closeable closeable =
                 MDCBuilder.create()
                     .addContext(MDCBuilder.ACTION, request.getCommand())
                     .build()) {
            String parameters = request.getArgument();
            Response response = doDATAFilter(session, parameters);

            if (response == null) {
                return doDATA(session, parameters);
            } else {
                return response;
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        } finally {
            timeMetric.stopAndPublish();
            session.needsCommandInjectionDetection();
        }
    }

    /**
     * Handler method called upon receipt of a DATA command.
     * Reads in message data, creates header, and delivers to
     * mail server service for delivery.
     *
     * @param session SMTP session object
     * @param argument the argument passed in with the command by the SMTP client
     */
    @SuppressWarnings("unchecked")
    protected Response doDATA(SMTPSession session, String argument) {
        MaybeSender sender = session.getAttachment(SMTPSession.SENDER, ProtocolSession.State.Transaction).orElse(MaybeSender.nullSender());
        MailEnvelope env = createEnvelope(session, sender, session.getAttachment(SMTPSession.RCPT_LIST, ProtocolSession.State.Transaction).orElse(ImmutableList.of()));
        session.setAttachment(MAILENV, env, ProtocolSession.State.Transaction);
        session.pushLineHandler(lineHandler);

        return DATA_READY;
    }

    protected MailEnvelope createEnvelope(SMTPSession session, MaybeSender sender, List<MailAddress> recipients) {
        MailEnvelopeImpl env = new MailEnvelopeImpl();
        env.setRecipients(recipients);
        env.setSender(sender);
        return env;
    }

    @Override
    public Collection<String> getImplCommands() {
        return COMMANDS;
    }

    @Override
    @SuppressWarnings({ "unchecked", "rawtypes" })
    public List getMarkerInterfaces() {
        List classes = new LinkedList();
        classes.add(DataLineFilter.class);
        return classes;
    }

    @Override
    @SuppressWarnings("rawtypes")
    public void wireExtensions(Class interfaceName, List extension) throws WiringException {
        if (DataLineFilter.class.equals(interfaceName)) {

            LineHandler<SMTPSession> lineHandler = new DataConsumerLineHandler();
            for (int i = extension.size() - 1; i >= 0; i--) {
                lineHandler = new DataLineFilterWrapper((DataLineFilter) extension.get(i), lineHandler);
            }

            this.lineHandler = lineHandler;
        }
    }

    protected Response doDATAFilter(SMTPSession session, String argument) {
        if ((argument != null) && (argument.length() > 0)) {
            return UNEXPECTED_ARG;
        }
        if (!session.getAttachment(SMTPSession.SENDER, ProtocolSession.State.Transaction).isPresent()) {
            return NO_SENDER;
        } else if (!session.getAttachment(SMTPSession.RCPT_LIST, ProtocolSession.State.Transaction).isPresent()) {
            return NO_RECIPIENT;
        }
        return null;
    }

    protected LineHandler<SMTPSession> getLineHandler() {
        return lineHandler;
    }

}

{'repo_name': 'apache/james-project', 'stars': '421', 'repo_language': 'Java', 'file_name': 'MigrationTaskSerializationTest.java', 'mime_type': 'text/x-c++', 'hash': 4999758328974075841, 'source_dataset': 'data'}


// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License"). You may
// not use this file except in compliance with the License. A copy of the
// License is located at
//
//	http://aws.amazon.com/apache2.0/
//
// or in the "license" file accompanying this file. This file is distributed
// on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
// express or implied. See the License for the specific language governing
// permissions and limitations under the License.

package logger

import (
	"fmt"
	"os"
	"strconv"
	"strings"
	"sync"
	"time"

	"github.com/cihub/seelog"
)

const (
	LOGLEVEL_ENV_VAR             = "ECS_LOGLEVEL"
	LOGLEVEL_ON_INSTANCE_ENV_VAR = "ECS_LOGLEVEL_ON_INSTANCE"
	LOGFILE_ENV_VAR              = "ECS_LOGFILE"
	LOG_DRIVER_ENV_VAR           = "ECS_LOG_DRIVER"
	LOG_ROLLOVER_TYPE_ENV_VAR    = "ECS_LOG_ROLLOVER_TYPE"
	LOG_OUTPUT_FORMAT_ENV_VAR    = "ECS_LOG_OUTPUT_FORMAT"
	LOG_MAX_FILE_SIZE_ENV_VAR    = "ECS_LOG_MAX_FILE_SIZE_MB"
	LOG_MAX_ROLL_COUNT_ENV_VAR   = "ECS_LOG_MAX_ROLL_COUNT"

	DEFAULT_LOGLEVEL                         = "info"
	DEFAULT_LOGLEVEL_WHEN_DRIVER_SET         = "off"
	DEFAULT_ROLLOVER_TYPE                    = "date"
	DEFAULT_OUTPUT_FORMAT                    = "logfmt"
	DEFAULT_MAX_FILE_SIZE            float64 = 10
	DEFAULT_MAX_ROLL_COUNT           int     = 24
)

type logConfig struct {
	RolloverType  string
	MaxRollCount  int
	MaxFileSizeMB float64
	logfile       string
	driverLevel   string
	instanceLevel string
	outputFormat  string
	lock          sync.Mutex
}

var Config *logConfig

func logfmtFormatter(params string) seelog.FormatterFunc {
	return func(message string, level seelog.LogLevel, context seelog.LogContextInterface) interface{} {
		return fmt.Sprintf(`level=%s time=%s msg=%q module=%s
`, level.String(), context.CallTime().UTC().Format(time.RFC3339), message, context.FileName())
	}
}

func jsonFormatter(params string) seelog.FormatterFunc {
	return func(message string, level seelog.LogLevel, context seelog.LogContextInterface) interface{} {
		return fmt.Sprintf(`{"level": %q, "time": %q, "msg": %q, "module": %q}
`, level.String(), context.CallTime().UTC().Format(time.RFC3339), message, context.FileName())
	}
}

func reloadConfig() {
	logger, err := seelog.LoggerFromConfigAsString(seelogConfig())
	if err == nil {
		seelog.ReplaceLogger(logger)
	} else {
		seelog.Error(err)
	}
}

func seelogConfig() string {
	c := `
<seelog type="asyncloop">
	<outputs formatid="` + Config.outputFormat + `">
		<filter levels="` + getLevelList(Config.driverLevel) + `">
			<console />`
	c += platformLogConfig()
	c += `
		</filter>`
	if Config.logfile != "" {
		c += `
		<filter levels="` + getLevelList(Config.instanceLevel) + `">`
		if Config.RolloverType == "size" {
			c += `
			<rollingfile filename="` + Config.logfile + `" type="size"
			 maxsize="` + strconv.Itoa(int(Config.MaxFileSizeMB*1000000)) + `" archivetype="none" maxrolls="` + strconv.Itoa(Config.MaxRollCount) + `" />`
		} else {
			c += `
			<rollingfile filename="` + Config.logfile + `" type="date"
			 datepattern="2006-01-02-15" archivetype="none" maxrolls="` + strconv.Itoa(Config.MaxRollCount) + `" />`
		}
		c += `
		</filter>`
	}
	c += `
	</outputs>
	<formats>
		<format id="logfmt" format="%EcsAgentLogfmt" />
		<format id="json" format="%EcsAgentJson" />
		<format id="windows" format="%Msg" />
	</formats>
</seelog>`

	return c
}

func getLevelList(fileLevel string) string {
	levelLists := map[string]string{
		"debug":    "debug,info,warn,error,critical",
		"info":     "info,warn,error,critical",
		"warn":     "warn,error,critical",
		"error":    "error,critical",
		"critical": "critical",
		"off":      "off",
	}
	return levelLists[fileLevel]
}

// SetLevel sets the log levels for logging
func SetLevel(driverLogLevel, instanceLogLevel string) {
	levels := map[string]string{
		"debug": "debug",
		"info":  "info",
		"warn":  "warn",
		"error": "error",
		"crit":  "critical",
		"none":  "off",
	}

	parsedDriverLevel, driverOk := levels[strings.ToLower(driverLogLevel)]
	parsedInstanceLevel, instanceOk := levels[strings.ToLower(instanceLogLevel)]

	if instanceOk || driverOk {
		Config.lock.Lock()
		defer Config.lock.Unlock()
		if instanceOk {
			Config.instanceLevel = parsedInstanceLevel
		}
		if driverOk {
			Config.driverLevel = parsedDriverLevel
		}
		reloadConfig()
	}
}

// GetLevel gets the log level
func GetLevel() string {
	Config.lock.Lock()
	defer Config.lock.Unlock()

	return Config.driverLevel
}

func setInstanceLevelDefault() string {
	if logDriver := os.Getenv(LOG_DRIVER_ENV_VAR); logDriver != "" {
		return DEFAULT_LOGLEVEL_WHEN_DRIVER_SET
	}
	if loglevel := os.Getenv(LOGLEVEL_ENV_VAR); loglevel != "" {
		return loglevel
	}
	return DEFAULT_LOGLEVEL
}

func init() {
	Config = &logConfig{
		logfile:       os.Getenv(LOGFILE_ENV_VAR),
		driverLevel:   DEFAULT_LOGLEVEL,
		instanceLevel: setInstanceLevelDefault(),
		RolloverType:  DEFAULT_ROLLOVER_TYPE,
		outputFormat:  DEFAULT_OUTPUT_FORMAT,
		MaxFileSizeMB: DEFAULT_MAX_FILE_SIZE,
		MaxRollCount:  DEFAULT_MAX_ROLL_COUNT,
	}

	if err := seelog.RegisterCustomFormatter("EcsAgentLogfmt", logfmtFormatter); err != nil {
		seelog.Error(err)
	}
	if err := seelog.RegisterCustomFormatter("EcsAgentJson", jsonFormatter); err != nil {
		seelog.Error(err)
	}

	SetLevel(os.Getenv(LOGLEVEL_ENV_VAR), os.Getenv(LOGLEVEL_ON_INSTANCE_ENV_VAR))

	if RolloverType := os.Getenv(LOG_ROLLOVER_TYPE_ENV_VAR); RolloverType != "" {
		Config.RolloverType = RolloverType
	}
	if outputFormat := os.Getenv(LOG_OUTPUT_FORMAT_ENV_VAR); outputFormat != "" {
		Config.outputFormat = outputFormat
	}
	if MaxRollCount := os.Getenv(LOG_MAX_ROLL_COUNT_ENV_VAR); MaxRollCount != "" {
		i, err := strconv.Atoi(MaxRollCount)
		if err == nil {
			Config.MaxRollCount = i
		} else {
			seelog.Error("Invalid value for "+LOG_MAX_ROLL_COUNT_ENV_VAR, err)
		}
	}
	if MaxFileSizeMB := os.Getenv(LOG_MAX_FILE_SIZE_ENV_VAR); MaxFileSizeMB != "" {
		f, err := strconv.ParseFloat(MaxFileSizeMB, 64)
		if err == nil {
			Config.MaxFileSizeMB = f
		} else {
			seelog.Error("Invalid value for "+LOG_MAX_FILE_SIZE_ENV_VAR, err)
		}
	}

	registerPlatformLogger()
	reloadConfig()
}

{'repo_name': 'aws/amazon-ecs-agent', 'stars': '1678', 'repo_language': 'Go', 'file_name': 'build.ps1', 'mime_type': 'text/plain', 'hash': 6768567992659414505, 'source_dataset': 'data'}


FontDame GPOS table

EM	1000

script table begin
mym2	default		0, 1, 2
mym2	KHT 		0, 1, 2
mym2	KSW 		0, 1, 2
mym2	MON 		0, 1, 2
script table end

feature table begin
0	kern	5
1	mark	0, 1, 2
2	mkmk	3, 4

feature table end

lookup	0	mark to base

RightToLeft	no
IgnoreBaseGlyphs	no
IgnoreLigatures	no
IgnoreMarks	no

mark	_i	0	-243,615
mark	_ii	0	-243,615
mark	_ii_mon	0	-243,615
mark	_ai	0	-243,615
mark	ai_khm_dup	0	-243,615
mark	_ai_phk	0	-243,615
mark	_o_mon	0	-243,615
mark	_e_above	0	-243,615
mark	_e_above_shn	0	-243,615
mark	_final_y_shn	0	-243,614
mark	i_gkn	0	-243,615
mark	oe_kyh	0	-243,615
mark	u_kyh	0	-243,615
mark	ee_kyh	0	-243,615
mark	anusvara	0	-243,615
mark	asat	0	-243,615
mark	saw_shn	0	-243,615
mark	_i_anusvara	0	-243,615
mark	_i_ai	0	-243,615
mark	_ii_anusvara	0	-243,615
mark	asat_anusvara	0	-243,615
mark	kinzi	0	243,614
mark	kinzi_i	0	-243,615
mark	kinzi_ii	0	-243,615
mark	kinzi_ii_mon	0	-243,615
mark	kinzi_ai	0	-243,615
mark	kinzi_asat	0	-243,615
mark	kinzi_anusvara	0	-243,615
mark	kinzi_i_anusvara	0	-243,615
mark	kinzi_ii_anusvara	0	-243,615
mark	asat_dup	0	-243,614
mark	ra_mark	0	-243,614
mark	ra_i	0	-243,615
mark	ra_ii	0	-243,615
mark	ra_asat	0	-243,615
mark	ra_mark_ai_skt	0	-243,615
mark	ra_mark_anusvara_skt	0	-243,615
mark	ra_mark_i_anusvara_skt	0	-243,614
mark	tone2_tlg	0	-243,614
base	zero_m	0	243,614
base	one_m	0	243,614
base	two_m	0	368,614
base	three_m	0	243,614
base	four_m	0	243,614
base	five_m	0	243,614
base	six_m	0	243,1056
base	seven_m	0	243,614
base	eight_m	0	243,614
base	nine_m	0	243,614
base	zero_shn	0	243,614
base	one_shn	0	188,614
base	two_shn	0	247,614
base	three_shn	0	243,614
base	four_shn	0	243,614
base	five_shn	0	246,614
base	six_shn	0	243,614
base	seven_shn	0	243,614
base	eight_shn	0	243,614
base	nine_shn	0	243,614
base	zero_tlg	0	243,1056
base	one_tlg	0	243,1056
base	two_tlg	0	243,1056
base	three_tlg	0	243,1056
base	four_tlg	0	243,1056
base	five_tlg	0	243,1056
base	six_tlg	0	243,1056
base	seven_tlg	0	243,1056
base	eight_tlg	0	243,1056
base	nine_tlg	0	243,614
base	ka	0	538,614
base	kha	0	243,614
base	ga	0	243,614
base	gha	0	541,610
base	nga	0	243,614
base	ca	0	243,614
base	cha	0	538,614
base	ja	0	243,614
base	jha	0	331,614
base	nya	0	243,614
base	nya.narrow	0	243,614
base	nya.notail	0	243,614
base	nnya	0	538,614
base	nnya.halftail	0	538,614
base	nnya.thirdtail	0	538,614
base	nnya.notail	0	538,614
base	great_nnya	0	833,614
base	tta	0	243,614
base	tta.alt	0	243,614
base	ttha	0	243,614
base	ttha.clipped	0	243,614
base	dda	0	243,614
base	ddha	0	243,614
base	nna	0	626,614
base	ta	0	538,614
base	tha	0	538,614
base	da	0	233,614
base	dha	0	243,614
base	na	0	240,614
base	na.alt	0	240,614
base	pa	0	243,614
base	pha	0	243,614
base	ba	0	243,614
base	bha	0	538,614
base	ma	0	243,614
base	ya	0	538,614
base	ra	0	243,614
base	ra.alt	0	243,614
base	ra.alt2	0	243,614
base	la	0	548,614
base	wa	0	243,614
base	sa	0	538,614
base	great_sa	0	852,614
base	ha	0	538,614
base	lla	0	243,614
base	lla.notail	0	243,614
base	a_m	0	538,614
base	sha_skt	0	243,614
base	ssa_skt	0	243,614
base	vocR_skt	0	243,614
base	vocRR_skt	0	243,614
base	vocL_skt	0	243,614
base	vocLL_skt	0	243,614
base	nga_mon	0	243,614
base	jha_mon	0	331,614
base	bba_mon	0	243,614
base	bbe_mon	0	243,614
base	nna_epk	0	638,614
base	tha_wpk	0	243,614
base	sha_skn	0	243,614
base	cha_shw	0	331,614
base	sha_shw	0	625,614
base	ka_shn	0	243,614
base	kha_shn	0	243,614
base	ga_shn	0	243,614
base	gha_shn	0	242,614
base	ca_shn	0	538,614
base	cha_shn	0	538,614
base	jha_shn	0	560,614
base	nya_shn	0	538,614
base	nna_shn	0	607,614
base	da_shn	0	569,614
base	na_shn	0	605,614
base	pha_shn	0	565,614
base	fa_shn	0	565,614
base	ba_shn	0	243,614
base	bha_shn	0	538,614
base	tha_shn	0	539,614
base	ha_shn	0	243,614
base	ha_shn_u	0	243,614
base	ha_shn_uu	0	243,614
base	ha_shn_medial_wa	0	243,614
base	ha_shn_medial_ha	0	243,614
base	a_shn	0	538,614
base	za_shn	0	567,614
base	ka_khm	0	538,614
base	kha_khm	0	243,614
base	ga_khm	0	568,614
base	gha_khm	0	243,614
base	nga_khm	0	243,614
base	ca_khm	0	554,614
base	cha_khm	0	265,614
base	ja_khm	0	568,614
base	jha_khm	0	565,614
base	nya_khm_dot	0	538,614
base	tta_khm	0	570,614
base	ttha_khm	0	538,614
base	dda_khm	0	569,614
base	ddha_khm	0	538,614
base	ta_khm	0	568,614
base	dha_khm	0	538,614
base	na_khm	0	340,614
base	pa_khm	0	243,614
base	ma_khm	0	243,614
base	ya_khm	0	538,614
base	la_khm	0	548,614
base	sa_khm	0	597,614
base	tha_khm	0	538,614
base	ha_khm	0	495,614
base	ha_khm_medial_wa	0	495,614
base	ha_khm_uu	0	495,614
base	hha_khm	0	548,614
base	aa_khm	0	529,614
base	fa_khm	0	442,614
base	xa_khm	0	538,614
base	za_khm	0	690,614
base	ra_khm	0	293,614
base	ga_tlg	0	538,614
base	gha_tlg	0	548,614
base	ja_tlg	0	538,614
base	nya_tlg	0	884,614
base	tta_tlg	0	538,614
base	dda_tlg	0	538,614
base	ddha_tlg	0	538,614
base	nna_tlg	0	290,614
base	da_tlg	0	538,614
base	dha_tlg	0	538,614
base	ba_tlg	0	243,614
base	bha_tlg	0	548,614
base	sa_tlg	0	597,614
base	lla_tlg	0	548,614
base	fa_tlg	0	538,614
base	tha_phk	0	538,614
base	ra_atn	0	736,614
base	wa_phk	0	243,614
base	medial_ya	0	-155,614
base	medial_ya_ha	0	-155,614
base	medial_ya_ha.alt	0	-155,614
base	medial_ya.alt1	0	-155,614
base	medial_ya_wa_ha	0	-155,614
base	medial_ya_wa_ha_ovl	0	-155,614
base	medial_ya_wa	0	-155,614
base	medial_ya_wa_ovl	0	-155,614
base	medial_ya.alt2	0	-155,614
base	medial_ya.alt3	0	-155,614
base	medial_ya.littletail	0	-123,614
base	medial_ya.ttha	0	-155,614
base	medial_ya_aa	0	243,614
base	medial_ya_eu_skn	0	242,614
base	medial_ya_wa_shn	0	-155,614
base	i_m	0	538,614
base	e_m	0	243,614
base	_e	0	243,614
base	_aa	0	52,614
base	aa_shn	0	98,599
base	_tall_aa	0	-46,1156
base	tone2_wpk	0	276,614
base	aforementioned	0	243,614
base	eu_skn	0	230,614
base	hathi_skn	0	243,614
base	kepho_skn	0	100,614
base	pwa_wpk	0	243,614
base	ywa_epk	0	538,614
base	ghwa_epk	0	538,614
base	fa_rpg	0	243,614
base	ka_ssa	0	538,614
base	ca_nya	0	243,614
base	ja.sub	0	-244,-75
base	ja_nya	0	243,614
base	nya_ca	0	243,614
base	nya_ca_ya	0	243,614
base	nya_cha	0	243,614
base	nya_cha_ya	0	243,614
base	nya_ja	0	243,614
base	nya_jha	0	243,614
base	nnya_medial_ha_u	0	538,614
base	nnya_medial_ha_uu	0	538,614
base	tta.littletail	0	245,614
base	tta.alt.littletail	0	243,614
base	tta_tta	0	243,614
base	tta_medial_ha	0	243,614
base	tta_ttha	0	243,614
base	ttha_medial_ha	0	243,614
base	dda.littletail	0	243,614
base	dda_ga	0	243,614
base	dda_dda	0	243,614
base	dda_ddha	0	243,614
base	dda_ma	0	243,614
base	dda_medial_ha	0	243,614
base	dda_wa	0	243,614
base	nna_tta	0	626,614
base	nna_ttha	0	626,614
base	nna_dda	0	626,614
base	da_dha_na	0	267,614
base	na_dot_below	0	240,614
base	ba_dha	0	243,614
base	ra_u	0	243,614
base	ra_uu	0	243,614
base	ra_medial_ha	0	243,614
base	ra_medial_ha_u	0	243,614
base	ra_medial_ha_uu	0	243,614
base	ra_medial_wa	0	243,614
base	ra_medial_wa_ha	0	243,614
base	ra_medial_ha_obl	0	241,614
base	ra_medial_ha_obl_u	0	243,614
base	ra_medial_ha_obl_uu	0	243,614
base	ra_medial_wa_ovl	0	245,614
base	ra_medial_wa_ovl_ha	0	245,614
base	lla.littletail	0	243,614
base	lla_lla	0	243,614
base	lla_medial_ha	0	243,614
base	ssa_tta	0	243,614
base	ssa_tta.littletail	0	243,614
base	ssa_ttha	0	243,614
base	cha_shw_medial_wa	0	243,614
base	sha_shw_medial_wa	0	538,614
base	uni25CC	0	214,614
base	_e_dot	0	243,614
base	ca_shn_dot	0	564,614
base	nya_shn_dot	0	538,614
base	ga_khm_dot	0	568,614
base	ca_khm_dot	0	554,614
base	cha_khm_dot	0	265,614
base	ja_khm_dot	0	568,614
base	jha_khm_dot	0	565,614
base	fa_khm_dot	0	442,614
base	ra_atn_dot	0	736,614
base	nya_khm	0	538,614
base	na_short.for_aa	0	240,614
base	na.for_aa	0	240,614
base	_aa.alt	0	52,614

lookup end

lookup	1	mark to base

RightToLeft	no
IgnoreBaseGlyphs	no
IgnoreLigatures	no
IgnoreMarks	no

mark	_medialNa_mon.sub2	0	-243,0
mark	_medialMa_mon.sub2	0	-243,0
mark	_medialLa_mon.sub2	0	-243,0
mark	ka.sub	0	-243,0
mark	ka.sub2	0	-243,-542
mark	gha.sub	0	-243,0
mark	gha.sub2	0	-243,-542
mark	cha.sub	0	-243,0
mark	cha.sub2	0	-243,-542
mark	nya.sub	0	-243,0
mark	nya.sub2	0	-243,-542
mark	nnya.sub	0	-243,0
mark	nnya.sub2	0	-243,-542
mark	tta.sub	0	-243,0
mark	tta.sub2	0	-243,-542
mark	tta.sub.alt	0	-243,0
mark	ttha.sub	0	-243,0
mark	ttha.sub2	0	-243,-542
mark	dda.sub	0	-243,0
mark	dda.sub2	0	-243,-542
mark	nna.sub	0	-243,0
mark	nna.sub2	0	-243,-542
mark	ta.sub	0	-243,0
mark	ta.sub2	0	-243,-542
mark	ta_wa.sub	0	-243,0
mark	ta_wa.sub2	0	-243,-542
mark	ta_wa_ovl.sub	0	-243,0
mark	ta_wa_ovl.sub2	0	-243,-542
mark	tha.sub	0	-243,0
mark	tha.sub2	0	-243,-542
mark	bha.sub	0	-243,0
mark	bha.sub2	0	-243,-542
mark	ya.sub	0	-243,0
mark	ya.sub2	0	-243,-542
mark	la.sub	0	-243,0
mark	la.sub2	0	-243,-542
mark	sa.sub	0	-243,0
mark	sa.sub2	0	-243,-542
mark	ha.sub	0	-243,0
mark	ha.sub2	0	-243,-542
mark	lla.sub	0	-243,0
mark	lla.sub2	0	-243,-542
mark	a_m.sub	0	-243,0
mark	a_m.sub2	0	-243,-542
mark	a_shn.sub	0	-243,0
mark	a_shn.sub2	0	-243,-542
mark	great_sa.sub	0	-243,0
mark	great_sa.sub2	0	-243,-542
mark	ca_shn.sub	0	-243,0
mark	ca_shn.sub2	0	-243,-542
mark	cha_shn.sub	0	-243,0
mark	cha_shn.sub2	0	-243,-542
mark	za_shn.sub	0	-243,0
mark	za_shn.sub2	0	-243,-542
mark	jha_shn.sub	0	-243,0
mark	jha_shn.sub2	0	-243,-542
mark	nya_shn.sub	0	-243,0
mark	nya_shn.sub2	0	-243,-542
mark	nna_shn.sub	0	-243,0
mark	nna_shn.sub2	0	-243,-542
mark	da_shn.sub	0	-243,0
mark	da_shn.sub2	0	-243,-542
mark	na_shn.sub	0	-243,0
mark	na_shn.sub2	0	-243,-542
mark	pha_shn.sub	0	-243,0
mark	pha_shn.sub2	0	-243,-542
mark	fa_shn.sub	0	-243,0
mark	fa_shn.sub2	0	-243,-542
mark	bha_shn.sub	0	-243,0
mark	bha_shn.sub2	0	-243,-542
mark	tha_shn.sub	0	-243,0
mark	tha_shn.sub2	0	-243,-542
mark	tha_phk.sub	0	-243,0
mark	ka_khm.sub	0	-243,0
mark	ka_khm.sub2	0	-243,-542
mark	ta_khm.sub	0	-243,0
mark	ta_khm.sub2	0	-243,-542
mark	tha_phk.sub2	0	-243,-542
mark	ya_khm.sub	0	-243,0
mark	ya_khm.sub2	0	-243,-542
mark	la_khm.sub	0	-243,0
mark	la_khm.sub2	0	-243,-542
mark	aa_khm.sub	0	-243,0
mark	aa_khm.sub2	0	-243,-542
mark	ka_shn_dot.sub	0	-243,0
mark	ka_shn_dot.sub2	0	-243,-542
mark	nya_shn_dot.sub	0	-243,0
mark	nya_shn_dot.sub2	0	-243,-542
mark	tha_khm.sub	0	-243,0
mark	tha_khm.sub2	0	-243,-542
mark	gha_khm.sub2	0	-243,-542
mark	gha_khm_dot.sub2	0	-243,-542
base	zero_m	0	243,0
base	one_m	0	243,0
base	two_m	0	228,-442
base	three_m	0	243,-442
base	four_m	0	243,-442
base	five_m	0	243,-442
base	six_m	0	243,0
base	seven_m	0	243,-442
base	eight_m	0	243,0
base	nine_m	0	243,-442
base	zero_shn	0	243,-442
base	one_shn	0	243,-442
base	two_shn	0	247,-442
base	three_shn	0	243,-442
base	four_shn	0	243,-442
base	five_shn	0	246,-442
base	six_shn	0	243,-442
base	seven_shn	0	243,-442
base	eight_shn	0	243,-442
base	nine_shn	0	243,-442
base	zero_tlg	0	243,0
base	one_tlg	0	243,0
base	two_tlg	0	243,0
base	three_tlg	0	243,0
base	four_tlg	0	243,0
base	five_tlg	0	243,0
base	six_tlg	0	243,0
base	seven_tlg	0	243,0
base	eight_tlg	0	243,0
base	nine_tlg	0	243,0
base	ka	0	399,0
base	kha	0	243,0
base	ga	0	243,0
base	gha	0	390,0
base	nga	0	243,0
base	ca	0	243,0
base	cha	0	370,0
base	ja	0	243,0
base	jha	0	56,0
base	nya	0	243,0
base	nya.narrow	0	243,0
base	nya.notail	0	243,0
base	nnya	0	399,0
base	nnya.halftail	0	399,0
base	nnya.thirdtail	0	399,0
base	nnya.notail	0	399,0
base	tta	0	243,-400
base	tta.alt	0	243,-300
base	ttha	0	243,-500
base	ttha.clipped	0	243,-500
base	dda	0	243,-200
base	ddha	0	243,0
base	nna	0	434,0
base	ta	0	390,0
base	tha	0	390,0
base	da	0	233,0
base	dha	0	243,0
base	na.alt	0	242,0
base	pa	0	243,0
base	pha	0	243,0
base	ba	0	243,0
base	bha	0	399,0
base	ma	0	243,0
base	ya	0	399,0
base	ra	0	208,0
base	ra.alt	0	208,0
base	ra.alt2	0	208,0
base	la	0	401,0
base	wa	0	243,0
base	sa	0	399,0
base	great_sa	0	539,0
base	ha	0	399,0
base	lla	0	243,-500
base	lla.notail	0	243,-237
base	a_m	0	399,0
base	sha_skt	0	243,0
base	ssa_skt	0	243,0
base	vocR_skt	0	243,0
base	vocRR_skt	0	243,0
base	vocL_skt	0	243,0
base	vocLL_skt	0	243,0
base	jha_mon	0	91,0
base	bba_mon	0	243,0
base	bbe_mon	0	243,-542
base	nna_epk	0	459,0
base	tha_wpk	0	243,0
base	sha_skn	0	108,0
base	ka_shn	0	243,0
base	kha_shn	0	243,0
base	ga_shn	0	243,0
base	gha_shn	0	242,0
base	ca_shn	0	399,0
base	cha_shn	0	399,0
base	jha_shn	0	399,0
base	nya_shn	0	399,0
base	nna_shn	0	413,0
base	da_shn	0	399,0
base	na_shn	0	410,0
base	pha_shn	0	399,0
base	fa_shn	0	399,0
base	ba_shn	0	243,0
base	bha_shn	0	399,0
base	tha_shn	0	400,0
base	ha_shn	0	326,0
base	a_shn	0	399,0
base	za_shn	0	399,0
base	ka_khm	0	399,0
base	kha_khm	0	243,0
base	ga_khm	0	399,0
base	gha_khm	0	243,0
base	nga_khm	0	243,0
base	ca_khm	0	399,0
base	cha_khm	0	265,0
base	ja_khm	0	406,0
base	jha_khm	0	404,0
base	nya_khm_dot	0	399,0
base	tta_khm	0	403,0
base	ttha_khm	0	399,0
base	dda_khm	0	404,0
base	ddha_khm	0	399,0
base	ta_khm	0	403,0
base	dha_khm	0	390,0
base	na_khm	0	340,0
base	pa_khm	0	243,0
base	ma_khm	0	243,0
base	ya_khm	0	399,0
base	la_khm	0	401,0
base	sa_khm	0	408,0
base	tha_khm	0	399,0
base	ha_khm	0	495,0
base	hha_khm	0	401,0
base	aa_khm	0	379,0
base	fa_khm	0	442,0
base	xa_khm	0	399,0
base	za_khm	0	538,0
base	ra_khm	0	293,0
base	ga_tlg	0	399,0
base	gha_tlg	0	401,0
base	ja_tlg	0	399,0
base	nya_tlg	0	399,0
base	tta_tlg	0	399,0
base	dda_tlg	0	399,0
base	ddha_tlg	0	399,0
base	nna_tlg	0	290,0
base	da_tlg	0	399,0
base	dha_tlg	0	399,0
base	ba_tlg	0	243,0
base	bha_tlg	0	401,0
base	sa_tlg	0	408,0
base	lla_tlg	0	401,0
base	fa_tlg	0	399,0
base	tha_phk	0	399,0
base	ra_atn	0	589,0
base	wa_phk	0	243,0
base	medial_ya_aa	0	243,0
base	medial_wa	0	-243,-542
base	medial_wa_shn	0	-243,-542
base	medial_wa_dotbelow_shn	0	-243,-542
base	medial_wa_ovl	0	-243,-542
base	medial_wa_ha	0	-243,-542
base	medial_wa_ha_ovl	0	-243,-542
base	medial_ha	0	-243,-542
base	medial_ha_obl	0	-243,-542
base	medial_ha_obl_uu	0	-243,-542
base	medial_ha_obl_uu_dot	0	-243,-542
base	medial_ha_uu	0	-243,-542
base	i_m	0	606,-559
base	e_m	0	243,0
base	_e	0	243,0
base	_uu	0	-243,-542
base	_aa	0	61,0
base	_tall_aa	0	94,0
base	_tall_aa_asat	0	94,0
base	_tall_aa_asat.spaced	0	94,0
base	kinzi_tall_aa	0	94,0
base	_aa_anusvara	0	61,0
base	_aa_ai	0	61,0
base	virama	0	-243,-542
base	dot_below	0	-243,-542
base	doubledotbelow	0	-243,-542
base	tone1_wpk	0	168,0
base	tone2_wpk	0	192,0
base	tone3_wpk	0	276,0
base	tone4_wpk	0	200,0
base	tone5_wpk	0	171,0
base	etone_shn	0	-243,-542
base	aforementioned	0	243,0
base	eu_skn	0	348,0
base	hathi_skn	0	243,0
base	kepho_skn	0	278,0
base	pwa_wpk	0	243,0
base	eu_wpk	0	173,0
base	ue_wpk	0	192,0
base	ywa_epk	0	399,0
base	ghwa_epk	0	399,0
base	fa_rpg	0	243,0
base	ka_ssa	0	399,0
base	ca_nya	0	243,-539
base	ja_nya	0	243,-539
base	nya_ca	0	243,-731
base	nya_ca_ya	0	299,-1013
base	nya_cha	0	243,-731
base	nya_cha_ya	0	299,-1013
base	nya_ja	0	243,-731
base	nya_jha	0	243,-731
base	tta.littletail	0	243,-500
base	tta.alt.littletail	0	243,-500
base	tta_tta	0	243,-542
base	tta_medial_ha	0	247,-500
base	tta_ttha	0	243,-500
base	ttha_medial_ha	0	243,-500
base	dda.littletail	0	243,-500
base	dda_ga	0	243,-542
base	dda_dda	0	243,-542
base	dda_ddha	0	243,-542
base	dda_ma	0	243,-542
base	dda_medial_ha	0	243,-542
base	dda_wa	0	243,-542
base	nna_tta	0	634,-542
base	nna_ttha	0	434,-542
base	nna_dda	0	434,-542
base	da_dha_na	0	256,-382
base	ba_dha	0	243,0
base	lla.littletail	0	243,-500
base	lla_lla	0	243,-542
base	lla_medial_ha	0	243,-500
base	ssa_tta	0	243,-300
base	ssa_tta.littletail	0	243,-500
base	ssa_ttha	0	243,-542
base	uni25CC	0	214,0
base	_e_dot	0	243,0
base	ca_shn_dot	0	425,0
base	nya_shn_dot	0	399,0
base	ga_khm_dot	0	399,0
base	ca_khm_dot	0	399,0
base	cha_khm_dot	0	265,0
base	ja_khm_dot	0	406,0
base	jha_khm_dot	0	404,0
base	fa_khm_dot	0	442,0
base	ra_atn_dot	0	589,0
base	nya_khm	0	399,0
base	dot_below.k	0	-243,-542
base	na_short.for_aa	0	242,0
base	_aa.alt	0	61,0

lookup end

lookup	2	mark to base

RightToLeft	no
IgnoreBaseGlyphs	no
IgnoreLigatures	no
IgnoreMarks	no

mark	_vocL_skt	0	-243,0
mark	_vocLL_skt	0	-243,0
mark	medial_wa	0	-243,0
mark	medial_wa_shn	0	-243,0
mark	medial_wa_dotbelow_shn	0	-243,0
mark	medial_wa_ovl	0	-243,0
mark	medial_wa_dot	0	-243,0
mark	medial_wa_dot_ovl	0	-243,0
mark	medial_wa_ha	0	-243,0
mark	medial_wa_ha_ovl	0	-243,0
mark	medial_wa_ha_dot	0	-243,0
mark	medial_wa_ha_dot_ovl	0	-243,0
mark	medial_ha	0	-243,0
mark	medial_ha_obl	0	-243,0
mark	medial_ha_obl_u	0	-243,0
mark	medial_ha_obl_uu	0	-243,0
mark	medial_ha_obl_u_dot	0	-243,0
mark	medial_ha_obl_uu_dot	0	-243,0
mark	medial_ha.sub2	0	-243,0
mark	medial_ha_obl.sub2	0	-243,0
mark	medial_ha_u	0	-243,0
mark	medial_ha_uu	0	-243,0
mark	medial_ha_dot	0	-243,0
mark	medial_ha_dot_obl	0	-243,0
mark	medial_ha_u_dot	0	-243,0
mark	medial_ha_uu_dot	0	-243,0
mark	_medialNa_mon	0	-243,0
mark	_medialMa_mon	0	-243,0
mark	_medialLa_mon	0	-243,0
mark	_u	0	-243,0
mark	_u_dot	0	-243,0
mark	_u_dot.alt	0	-243,0
mark	_uu	0	-243,0
mark	_uu_dot	0	-243,0
mark	_uu_dot.alt	0	-243,0
mark	virama	0	-243,0
mark	dot_below	0	-243,0
mark	doubledotbelow	0	-243,0
mark	etone_shn	0	-243,0
mark	ue_wpk	0	192,0
mark	kha.sub	0	-243,0
mark	kha.sub2	0	-243,-542
mark	ga.sub	0	-243,0
mark	ga.sub2	0	-243,-542
mark	nga.sub	0	-243,0
mark	nga.sub2	0	-243,-542
mark	ca.sub	0	-243,0
mark	ca.sub2	0	-243,-542
mark	ja.sub	0	-243,0
mark	ja.sub2	0	-243,-542
mark	tta.sub.alt	0	-243,0
mark	dda.sub_mon	0	-243,0
mark	ddha.sub	0	-243,0
mark	ddha.sub2	0	-243,-542
mark	da.sub	0	-245,0
mark	da.sub2	0	-245,-542
mark	dha.sub	0	-243,0
mark	dha.sub2	0	-243,-542
mark	na.sub	0	-243,0
mark	na.sub2	0	-243,-542
mark	pa.sub	0	-243,0
mark	pa.sub2	0	-243,-542
mark	pha.sub	0	-243,0
mark	pha.sub2	0	-243,-542
mark	ba.sub	0	-243,0
mark	ba.sub2	0	-243,-542
mark	ma.sub	0	-243,0
mark	ma.sub2	0	-243,-542
mark	ra.sub	0	-243,0
mark	ra.sub2	0	-243,-542
mark	wa.sub	0	-243,0
mark	wa.sub2	0	-243,-542
mark	e_m.sub	0	-243,0
mark	e_m.sub2	0	-243,-542
mark	sha_skt.sub	0	-243,0
mark	sha_skt.sub2	0	-243,-542
mark	ssa_skt.sub	0	-243,0
mark	ssa_skt.sub2	0	-243,-542
mark	vocR_skt.sub	0	-243,0
mark	vocR_skt.sub2	0	-243,-542
mark	vocRR_skt.sub	0	-243,0
mark	vocRR_skt.sub2	0	-243,-542
mark	nga_mon.sub	0	-243,0
mark	nga_mon.sub2	0	-243,-542
mark	jha_mon.sub2	0	-243,-542
mark	bba_mon.sub	0	-243,0
mark	bba_mon.sub2	0	-243,-542
mark	bbe_mon.sub	0	-243,0
mark	bbe_mon.sub2	0	-243,-542
mark	ka_shn.sub	0	-243,0
mark	ka_shn.sub2	0	-243,-542
mark	kha_shn.sub	0	-243,0
mark	kha_shn.sub2	0	-243,-542
mark	ga_shn.sub	0	-243,0
mark	ga_shn.sub2	0	-243,-542
mark	gha_shn.sub	0	-243,0
mark	gha_shn.sub2	0	-243,-542
mark	ba_shn.sub	0	-243,0
mark	ba_shn.sub2	0	-243,-542
mark	ha_shn.sub	0	-243,0
mark	ha_shn.sub2	0	-243,-542
mark	fa_rpg.sub	0	-243,0
mark	fa_rpg.sub2	0	-243,-542
mark	pa_phk.sub	0	-243,0
mark	ma_phk.sub	0	-243,0
mark	nga_khm.sub	0	-243,0
mark	nga_khm.sub2	0	-243,-542
mark	pa_phk.sub2	0	-243,-542
mark	ma_phk.sub2	0	-243,-542
mark	kha_khm.sub	0	-243,0
mark	kha_khm.sub2	0	-243,-542
mark	gha_khm.sub	0	-243,0
mark	gha_khm_dot.sub	0	-243,0
mark	dot_below.k	0	-243,0
mark	ga_khm.sub	0	-243,0
mark	ga_khm.sub2	0	-243,-542
base	zero_m	0	243,0
base	one_m	0	243,0
base	two_m	0	228,-442
base	three_m	0	243,-442
base	four_m	0	243,-442
base	five_m	0	243,-442
base	six_m	0	243,0
base	seven_m	0	243,-442
base	eight_m	0	243,0
base	nine_m	0	243,-442
base	zero_shn	0	243,-442
base	one_shn	0	243,-442
base	two_shn	0	247,-442
base	three_shn	0	243,-442
base	four_shn	0	243,-442
base	five_shn	0	246,-442
base	six_shn	0	243,-442
base	seven_shn	0	243,-442
base	eight_shn	0	243,-442
base	nine_shn	0	243,-442
base	zero_tlg	0	243,0
base	one_tlg	0	243,0
base	two_tlg	0	243,0
base	three_tlg	0	243,0
base	four_tlg	0	243,0
base	five_tlg	0	243,0
base	six_tlg	0	243,0
base	seven_tlg	0	243,0
base	eight_tlg	0	243,0
base	nine_tlg	0	243,0
base	ka	0	538,0
base	kha	0	243,0
base	ga	0	243,0
base	gha	0	538,0
base	nga	0	243,0
base	ca	0	243,0
base	cha	0	538,0
base	ja	0	243,0
base	jha	0	176,0
base	nya	0	243,0
base	nya.narrow	0	243,0
base	nya.notail	0	243,0
base	nnya	0	538,0
base	nnya.halftail	0	538,0
base	nnya.thirdtail	0	538,0
base	nnya.notail	0	538,0
base	tta	0	243,-400
base	tta.alt	0	243,-300
base	ttha	0	243,-500
base	ttha.clipped	0	243,0
base	dda	0	243,-200
base	ddha	0	243,0
base	nna	0	634,0
base	ta	0	538,0
base	tha	0	538,0
base	da	0	233,0
base	dha	0	243,0
base	na.alt	0	242,0
base	pa	0	243,0
base	pha	0	243,0
base	ba	0	243,0
base	bha	0	538,0
base	ma	0	243,0
base	ya	0	538,0
base	ra	0	208,0
base	ra.alt	0	208,0
base	ra.alt2	0	208,0
base	la	0	564,0
base	wa	0	243,0
base	sa	0	538,0
base	great_sa	0	852,0
base	ha	0	538,0
base	lla	0	243,-500
base	lla.notail	0	243,-237
base	a_m	0	538,0
base	sha_skt	0	243,0
base	ssa_skt	0	243,0
base	vocR_skt	0	243,0
base	vocRR_skt	0	243,0
base	vocL_skt	0	243,0
base	vocLL_skt	0	243,0
base	jha_mon	0	91,0
base	bba_mon	0	243,0
base	bbe_mon	0	243,-542
base	nna_epk	0	638,0
base	tha_wpk	0	243,0
base	sha_skn	0	108,0
base	ka_shn	0	243,0
base	kha_shn	0	243,0
base	ga_shn	0	243,0
base	gha_shn	0	242,0
base	ca_shn	0	538,0
base	cha_shn	0	538,0
base	jha_shn	0	560,0
base	nya_shn	0	626,0
base	nna_shn	0	607,0
base	da_shn	0	569,0
base	na_shn	0	605,0
base	pha_shn	0	565,0
base	fa_shn	0	565,0
base	ba_shn	0	243,0
base	bha_shn	0	538,0
base	tha_shn	0	539,0
base	ha_shn	0	326,0
base	a_shn	0	538,0
base	za_shn	0	567,0
base	ka_khm	0	538,0
base	kha_khm	0	243,0
base	ga_khm	0	568,0
base	gha_khm	0	243,0
base	nga_khm	0	243,0
base	ca_khm	0	554,0
base	cha_khm	0	265,0
base	ja_khm	0	568,0
base	jha_khm	0	565,0
base	nya_khm_dot	0	557,0
base	tta_khm	0	570,0
base	ttha_khm	0	538,0
base	dda_khm	0	569,0
base	ddha_khm	0	538,0
base	ta_khm	0	568,0
base	dha_khm	0	538,0
base	na_khm	0	340,0
base	pa_khm	0	243,0
base	ma_khm	0	243,0
base	ya_khm	0	538,0
base	la_khm	0	564,0
base	sa_khm	0	597,0
base	tha_khm	0	538,0
base	ha_khm	0	495,0
base	hha_khm	0	564,0
base	aa_khm	0	529,0
base	fa_khm	0	442,0
base	xa_khm	0	538,0
base	za_khm	0	690,0
base	ra_khm	0	293,0
base	ga_tlg	0	538,0
base	gha_tlg	0	564,0
base	ja_tlg	0	538,0
base	nya_tlg	0	884,0
base	tta_tlg	0	538,0
base	dda_tlg	0	538,0
base	ddha_tlg	0	538,0
base	nna_tlg	0	290,0
base	da_tlg	0	538,0
base	dha_tlg	0	538,0
base	ba_tlg	0	243,0
base	bha_tlg	0	564,0
base	sa_tlg	0	597,0
base	lla_tlg	0	564,0
base	fa_tlg	0	538,0
base	tha_phk	0	538,0
base	ra_atn	0	752,0
base	wa_phk	0	243,0
base	medial_ya_aa	0	243,0
base	medial_wa	0	-243,-542
base	medial_wa_shn	0	-243,-542
base	medial_wa_dotbelow_shn	0	-243,-542
base	medial_wa_ovl	0	-243,-542
base	medial_wa_ha	0	-243,-542
base	medial_wa_ha_ovl	0	-243,-542
base	medial_ha	0	-243,-542
base	medial_ha_obl	0	-243,-542
base	medial_ha_obl_uu	0	-243,-542
base	medial_ha_obl_uu_dot	0	-243,-542
base	medial_ha_uu	0	-243,-542
base	i_m	0	606,-559
base	e_m	0	243,0
base	_e	0	243,0
base	_uu	0	-243,-542
base	_aa	0	61,0
base	_tall_aa	0	94,0
base	_tall_aa_asat	0	94,0
base	_tall_aa_asat.spaced	0	94,0
base	kinzi_tall_aa	0	94,0
base	ra_mark_tall_aa_skt	0	94,0
base	tall_aa_anusvara	0	94,0
base	tall_aa_ai	0	94,0
base	_aa_anusvara	0	61,0
base	_aa_ai	0	61,0
base	virama	0	-243,-542
base	dot_below	0	-243,-542
base	doubledotbelow	0	-243,-542
base	tone1_wpk	0	168,0
base	tone2_wpk	0	192,0
base	tone3_wpk	0	276,0
base	tone4_wpk	0	200,0
base	tone5_wpk	0	171,0
base	etone_shn	0	-243,-542
base	aforementioned	0	243,0
base	eu_skn	0	348,0
base	eu_skn_asat	0	348,0
base	hathi_skn	0	243,0
base	kepho_skn	0	278,0
base	pwa_wpk	0	243,0
base	eu_wpk	0	173,0
base	ywa_epk	0	552,0
base	ghwa_epk	0	552,0
base	fa_rpg	0	243,0
base	ka_ssa	0	538,0
base	ca_nya	0	243,-539
base	ja_nya	0	243,-539
base	nya_ca	0	243,-731
base	nya_ca_ya	0	407,-1013
base	nya_cha	0	243,-731
base	nya_cha_ya	0	407,-1013
base	nya_ja	0	243,-731
base	nya_jha	0	243,-731
base	tta.littletail	0	243,-500
base	tta.alt.littletail	0	243,-500
base	tta_tta	0	243,-542
base	tta_medial_ha	0	247,-500
base	tta_ttha	0	243,-500
base	ttha_medial_ha	0	243,-500
base	dda.littletail	0	243,-500
base	dda_ga	0	243,-542
base	dda_dda	0	243,-542
base	dda_ddha	0	243,-542
base	dda_ma	0	243,-542
base	dda_medial_ha	0	243,-542
base	dda_wa	0	243,-542
base	nna_tta	0	634,-542
base	nna_ttha	0	551,-542
base	nna_dda	0	551,-542
base	da_dha_na	0	256,-382
base	ba_dha	0	243,0
base	lla.littletail	0	243,-500
base	lla_lla	0	243,-542
base	lla_medial_ha	0	243,-500
base	ssa_tta	0	243,-300
base	ssa_tta.littletail	0	243,-500
base	ssa_ttha	0	243,-542
base	uni25CC	0	214,0
base	_e_dot	0	243,0
base	ca_shn_dot	0	564,0
base	nya_shn_dot	0	626,0
base	ga_khm_dot	0	568,0
base	ca_khm_dot	0	554,0
base	cha_khm_dot	0	265,0
base	ja_khm_dot	0	568,0
base	jha_khm_dot	0	565,0
base	fa_khm_dot	0	442,0
base	ra_atn_dot	0	752,0
base	nya_khm	0	557,0
base	na_short.for_aa	0	242,0
base	na.for_aa	0	433,0
base	_aa.alt	0	61,0

lookup end

lookup	3	mark to mark

RightToLeft	no
IgnoreBaseGlyphs	no
IgnoreLigatures	no
IgnoreMarks	no
MarkAttachmentType	2

mark	_medialNa_mon.sub2	0	-243,0
mark	_medialMa_mon.sub2	0	-243,0
mark	_medialLa_mon.sub2	0	-243,0
mark	ka.sub2	0	-243,-542
mark	gha.sub2	0	-243,-542
mark	cha.sub2	0	-243,-542
mark	nya.sub2	0	-243,-542
mark	nnya.sub2	0	-243,-542
mark	tta.sub2	0	-243,-542
mark	ttha.sub2	0	-243,-542
mark	dda.sub2	0	-243,-542
mark	nna.sub2	0	-243,-542
mark	ta.sub2	0	-243,-542
mark	ta_wa.sub2	0	-243,-542
mark	ta_wa_ovl.sub2	0	-243,-542
mark	tha.sub2	0	-243,-542
mark	bha.sub2	0	-243,-542
mark	ya.sub2	0	-243,-542
mark	la.sub2	0	-243,-542
mark	sa.sub2	0	-243,-542
mark	ha.sub2	0	-243,-542
mark	lla.sub2	0	-243,-542
mark	a_m.sub2	0	-243,-542
mark	a_shn.sub2	0	-243,-542
mark	great_sa.sub2	0	-243,-542
mark	ca_shn.sub2	0	-243,-542
mark	cha_shn.sub2	0	-243,-542
mark	za_shn.sub2	0	-243,-542
mark	jha_shn.sub2	0	-243,-542
mark	nya_shn.sub2	0	-243,-542
mark	nna_shn.sub2	0	-243,-542
mark	da_shn.sub2	0	-243,-542
mark	na_shn.sub2	0	-243,-542
mark	pha_shn.sub2	0	-243,-542
mark	fa_shn.sub2	0	-243,-542
mark	bha_shn.sub2	0	-243,-542
mark	tha_shn.sub2	0	-243,-542
mark	ka_khm.sub2	0	-243,-542
mark	ta_khm.sub2	0	-243,-542
mark	tha_phk.sub2	0	-243,-542
mark	ya_khm.sub2	0	-243,-542
mark	la_khm.sub2	0	-243,-542
mark	aa_khm.sub2	0	-243,-542
mark	ka_shn_dot.sub2	0	-243,-542
mark	nya_shn_dot.sub2	0	-243,-542
mark	tha_khm.sub2	0	-243,-542
mark	gha_khm.sub2	0	-243,-542
mark	gha_khm_dot.sub2	0	-243,-542
base	_vocL_skt	0	-243,-542
base	_vocLL_skt	0	-243,-542
base	medial_ha.sub2	0	-243,-542
base	medial_ha_obl.sub2	0	-243,-542
base	_medialNa_mon	0	-243,-542
base	_medialMa_mon	0	-243,-542
base	_medialLa_mon	0	-243,-542
base	ka.sub	0	-243,-542
base	kha.sub	0	-243,-542
base	ga.sub	0	-243,-542
base	gha.sub	0	-243,-542
base	nga.sub	0	-243,-542
base	ca.sub	0	-243,-542
base	cha.sub	0	-243,-542
base	ja.sub	0	-243,-542
base	nya.sub	0	-243,-542
base	nnya.sub	0	-243,-842
base	tta.sub	0	-243,-542
base	tta.sub.alt	0	-243,-542
base	ttha.sub	0	-243,-542
base	dda.sub	0	-243,-542
base	dda.sub_mon	0	-243,-542
base	ddha.sub	0	-243,-542
base	nna.sub	0	-243,-542
base	ta.sub	0	-243,-542
base	ta_wa.sub	0	-243,-842
base	ta_wa_ovl.sub	0	-243,-842
base	tha.sub	0	-243,-542
base	da.sub	0	-245,-542
base	dha.sub	0	-243,-542
base	na.sub	0	-243,-542
base	pa.sub	0	-243,-542
base	pha.sub	0	-243,-542
base	ba.sub	0	-243,-542
base	bha.sub	0	-243,-542
base	ma.sub	0	-243,-542
base	ya.sub	0	-243,-542
base	ra.sub	0	-243,-542
base	la.sub	0	-243,-542
base	wa.sub	0	-243,-542
base	sa.sub	0	-243,-542
base	ha.sub	0	-243,-542
base	lla.sub	0	-243,-542
base	a_m.sub	0	-243,-542
base	a_shn.sub	0	-243,-542
base	e_m.sub	0	-243,-542
base	great_sa.sub	0	-243,-542
base	sha_skt.sub	0	-243,-542
base	ssa_skt.sub	0	-243,-542
base	vocR_skt.sub	0	-243,-542
base	vocRR_skt.sub	0	-243,-542
base	nga_mon.sub	0	-243,-542
base	jha_mon.sub	0	-243,-542
base	bba_mon.sub	0	-243,-542
base	bbe_mon.sub	0	-243,-842
base	ka_shn.sub	0	-243,-542
base	kha_shn.sub	0	-243,-542
base	ga_shn.sub	0	-243,-542
base	gha_shn.sub	0	-243,-542
base	ca_shn.sub	0	-243,-542
base	cha_shn.sub	0	-243,-542
base	za_shn.sub	0	-243,-542
base	jha_shn.sub	0	-243,-542
base	nya_shn.sub	0	-243,-842
base	nna_shn.sub	0	-243,-542
base	da_shn.sub	0	-243,-542
base	na_shn.sub	0	-243,-542
base	pha_shn.sub	0	-243,-542
base	fa_shn.sub	0	-243,-842
base	ba_shn.sub	0	-243,-542
base	bha_shn.sub	0	-243,-542
base	tha_shn.sub	0	-243,-542
base	ha_shn.sub	0	-243,-842
base	fa_rpg.sub	0	-243,-542
base	tha_phk.sub	0	-243,-542
base	pa_phk.sub	0	-243,-542
base	ma_phk.sub	0	-243,-542
base	ka_khm.sub	0	-243,-542
base	nga_khm.sub	0	-243,-542
base	ta_khm.sub	0	-243,-542
base	ya_khm.sub	0	-243,-542
base	la_khm.sub	0	-243,-542
base	aa_khm.sub	0	-243,-542
base	kha_khm.sub	0	-243,-542
base	ka_shn_dot.sub	0	-243,-542
base	nya_shn_dot.sub	0	-243,-842
base	tha_khm.sub	0	-243,-542
base	gha_khm.sub	0	-243,-542
base	gha_khm_dot.sub	0	-243,-542
base	ga_khm.sub	0	-243,-542

lookup end

lookup	4	mark to mark

RightToLeft	no
IgnoreBaseGlyphs	no
IgnoreLigatures	no
IgnoreMarks	no
MarkAttachmentType	2

mark	medial_ha.sub2	0	-243,0
mark	medial_ha_obl.sub2	0	-243,0
mark	kha.sub2	0	-243,-542
mark	ga.sub2	0	-243,-542
mark	nga.sub2	0	-243,-542
mark	ca.sub2	0	-243,-542
mark	ja.sub2	0	-243,-542
mark	ddha.sub2	0	-243,-542
mark	da.sub2	0	-243,-542
mark	dha.sub2	0	-243,-542
mark	na.sub2	0	-243,-542
mark	pa.sub2	0	-243,-542
mark	pha.sub2	0	-243,-542
mark	ba.sub2	0	-243,-542
mark	ma.sub2	0	-243,-542
mark	ra.sub2	0	-243,-542
mark	wa.sub2	0	-243,-542
mark	e_m.sub2	0	-243,-542
mark	sha_skt.sub2	0	-243,-542
mark	ssa_skt.sub2	0	-243,-542
mark	vocR_skt.sub2	0	-243,-542
mark	vocRR_skt.sub2	0	-243,-542
mark	nga_mon.sub2	0	-243,-542
mark	jha_mon.sub2	0	-243,-542
mark	bba_mon.sub2	0	-243,-542
mark	bbe_mon.sub2	0	-243,-542
mark	ka_shn.sub2	0	-243,-542
mark	kha_shn.sub2	0	-243,-542
mark	ga_shn.sub2	0	-243,-542
mark	gha_shn.sub2	0	-243,-542
mark	ba_shn.sub2	0	-243,-542
mark	ha_shn.sub2	0	-243,-542
mark	fa_rpg.sub2	0	-243,-542
mark	nga_khm.sub2	0	-243,-542
mark	pa_phk.sub2	0	-243,-542
mark	ma_phk.sub2	0	-243,-542
mark	kha_khm.sub2	0	-243,-542
mark	ga_khm.sub2	0	-243,-542
base	_vocL_skt	0	-243,-542
base	_vocLL_skt	0	-243,-542
base	medial_ha.sub2	0	-243,-542
base	medial_ha_obl.sub2	0	-243,-542
base	_medialNa_mon	0	-243,-542
base	_medialMa_mon	0	-243,-542
base	_medialLa_mon	0	-243,-542
base	ka.sub	0	-121,-542
base	kha.sub	0	-243,-542
base	ga.sub	0	-243,-542
base	gha.sub	0	-121,-542
base	nga.sub	0	-243,-542
base	ca.sub	0	-243,-542
base	cha.sub	0	-121,-542
base	ja.sub	0	-243,-542
base	nya.sub	0	-121,-542
base	nnya.sub	0	-121,-842
base	tta.sub	0	-121,-542
base	tta.sub.alt	0	-243,-542
base	ttha.sub	0	-121,-542
base	dda.sub	0	-121,-542
base	dda.sub_mon	0	-243,-542
base	ddha.sub	0	-243,-542
base	nna.sub	0	-121,-542
base	ta.sub	0	-121,-542
base	ta_wa.sub	0	-121,-842
base	ta_wa_ovl.sub	0	-121,-842
base	tha.sub	0	-121,-542
base	da.sub	0	-245,-542
base	dha.sub	0	-243,-542
base	na.sub	0	-243,-542
base	pa.sub	0	-243,-542
base	pha.sub	0	-243,-542
base	ba.sub	0	-243,-542
base	bha.sub	0	-121,-542
base	ma.sub	0	-243,-542
base	ya.sub	0	-121,-542
base	ra.sub	0	-243,-542
base	la.sub	0	-121,-542
base	wa.sub	0	-243,-542
base	sa.sub	0	-121,-542
base	ha.sub	0	-121,-542
base	lla.sub	0	-121,-542
base	a_m.sub	0	-91,-541
base	a_shn.sub	0	-121,-542
base	e_m.sub	0	-243,-542
base	great_sa.sub	0	-121,-542
base	sha_skt.sub	0	-243,-542
base	ssa_skt.sub	0	-243,-542
base	vocR_skt.sub	0	-243,-542
base	vocRR_skt.sub	0	-243,-542
base	nga_mon.sub	0	-243,-542
base	jha_mon.sub	0	-243,-542
base	bba_mon.sub	0	-243,-542
base	bbe_mon.sub	0	-243,-842
base	ka_shn.sub	0	-243,-542
base	kha_shn.sub	0	-243,-542
base	ga_shn.sub	0	-243,-542
base	gha_shn.sub	0	-243,-542
base	ca_shn.sub	0	-121,-542
base	cha_shn.sub	0	-121,-542
base	za_shn.sub	0	-121,-542
base	jha_shn.sub	0	-121,-542
base	nya_shn.sub	0	-121,-842
base	nna_shn.sub	0	-121,-542
base	da_shn.sub	0	-121,-542
base	na_shn.sub	0	-121,-542
base	pha_shn.sub	0	-121,-542
base	fa_shn.sub	0	-121,-842
base	ba_shn.sub	0	-243,-542
base	bha_shn.sub	0	-121,-542
base	tha_shn.sub	0	-121,-542
base	ha_shn.sub	0	-243,-842
base	fa_rpg.sub	0	-243,-542
base	tha_phk.sub	0	-121,-542
base	pa_phk.sub	0	-243,-542
base	ma_phk.sub	0	-243,-542
base	ka_khm.sub	0	-121,-542
base	nga_khm.sub	0	-243,-542
base	ta_khm.sub	0	-121,-542
base	ya_khm.sub	0	-121,-542
base	la_khm.sub	0	-121,-542
base	aa_khm.sub	0	-121,-542
base	kha_khm.sub	0	-243,-542
base	ka_shn_dot.sub	0	-121,-542
base	nya_shn_dot.sub	0	-121,-842
base	tha_khm.sub	0	-121,-542
base	gha_khm.sub	0	-84,-542
base	gha_khm_dot.sub	0	-84,-542
base	ga_khm.sub	0	-243,-542

lookup end

lookup	5	chained

RightToLeft	no
IgnoreBaseGlyphs	no
IgnoreLigatures	no
IgnoreMarks	no
MarkAttachmentType	2

backtrackclass definition begin
kha	1
ga	1
nga	1
ca	1
ja	1
ttha.clipped	1
ddha	1
da	1
dha	1
na	1
na.alt	1
pa	1
pha	1
ba	1
ma	1
wa	1
sha_skt	1
ssa_skt	1
vocR_skt	1
vocRR_skt	1
vocL_skt	1
vocLL_skt	1
bba_mon	1
tha_wpk	1
ka_shn	1
kha_shn	1
ga_shn	1
gha_shn	1
ba_shn	1
ha_shn	1
kha_khm	1
gha_khm	1
nga_khm	1
cha_khm	1
na_khm	1
pa_khm	1
ma_khm	1
fa_khm	1
ra_khm	1
nna_tlg	1
na_tlg	1
ba_tlg	1
wa_phk	1
e_m	1
_e	1
pwa_wpk	1
fa_rpg	1
uni25CC	1
_e_dot	1
cha_khm_dot	1
fa_khm_dot	1
na_short.for_aa	1
na.for_aa	1
ka.sub	2
gha.sub	2
cha.sub	2
nya.sub	2
nnya.sub	2
tta.sub	2
ttha.sub	2
dda.sub	2
nna.sub	2
ta.sub	2
tha.sub	2
bha.sub	2
ya.sub	2
la.sub	2
sa.sub	2
ha.sub	2
lla.sub	2
a_m.sub	2
a_shn.sub	2
great_sa.sub	2
ca_shn.sub	2
cha_shn.sub	2
za_shn.sub	2
jha_shn.sub	2
nya_shn.sub	2
nna_shn.sub	2
da_shn.sub	2
na_shn.sub	2
pha_shn.sub	2
fa_shn.sub	2
bha_shn.sub	2
tha_shn.sub	2
tha_phk.sub	2
ka_khm.sub	2
ta_khm.sub	2
ya_khm.sub	2
la_khm.sub	2
aa_khm.sub	2
ka_shn_dot.sub	2
nya_shn_dot.sub	2
tha_khm.sub	2
gha_khm.sub	2
gha_khm_dot.sub	2
class definition end

class definition begin
kha	1
ga	1
nga	1
ca	1
ja	1
ttha.clipped	1
ddha	1
da	1
dha	1
na	1
na.alt	1
pa	1
pha	1
ba	1
ma	1
wa	1
sha_skt	1
ssa_skt	1
vocR_skt	1
vocRR_skt	1
vocL_skt	1
vocLL_skt	1
bba_mon	1
tha_wpk	1
ka_shn	1
kha_shn	1
ga_shn	1
gha_shn	1
ba_shn	1
ha_shn	1
kha_khm	1
gha_khm	1
nga_khm	1
cha_khm	1
na_khm	1
pa_khm	1
ma_khm	1
fa_khm	1
ra_khm	1
nna_tlg	1
na_tlg	1
ba_tlg	1
wa_phk	1
e_m	1
_e	1
pwa_wpk	1
fa_rpg	1
uni25CC	1
_e_dot	1
cha_khm_dot	1
fa_khm_dot	1
na_short.for_aa	1
na.for_aa	1
ka	2
gha	2
cha	2
great_nnya	2
nna	2
ta	2
tha	2
bha	2
ya	2
la	2
sa	2
great_sa	2
ha	2
a_m	2
nna_epk	2
sha_shw	2
ca_shn	2
cha_shn	2
jha_shn	2
nna_shn	2
da_shn	2
na_shn	2
pha_shn	2
bha_shn	2
tha_shn	2
a_shn	2
za_shn	2
ka_khm	2
ga_khm	2
ca_khm	2
ja_khm	2
jha_khm	2
nya_khm_dot	2
tta_khm	2
ttha_khm	2
dda_khm	2
ddha_khm	2
ta_khm	2
dha_khm	2
ya_khm	2
la_khm	2
sa_khm	2
tha_khm	2
hha_khm	2
aa_khm	2
xa_khm	2
za_khm	2
ga_tlg	2
gha_tlg	2
cha_tlg	2
ja_tlg	2
nya_tlg	2
tta_tlg	2
dda_tlg	2
ddha_tlg	2
da_tlg	2
dha_tlg	2
bha_tlg	2
sa_tlg	2
lla_tlg	2
fa_tlg	2
tha_phk	2
ra_atn	2
ka_ssa	2
ca_shn_dot	2
nya_shn_dot	2
ga_khm_dot	2
ca_khm_dot	2
ja_khm_dot	2
jha_khm_dot	2
ra_atn_dot	2
nya_khm	2
dot_below	3
medial_ra	4
medial_ra_tt	4
medial_ra_tt2	4
medial_ra.w2	4
medial_ra_tt.w2	4
medial_ra.w2_5	4
medial_ra_tt.w2_5	4
medial_ra.w3	4
medial_ra_tt.w3	4
medial_ra.w2_2	4
medial_ra_tt.w2_2	4
_aa	5
_aa_anusvara	5
_aa_ai	5
_aa.alt	5
class definition end

class-chain		4, 1, 3		3, 6
class-chain		4, 2, 3		3, 6
class-chain	2, 1	5, 3		2, 7

lookup end

lookup	6	single

RightToLeft	no
IgnoreBaseGlyphs	no
IgnoreLigatures	no
IgnoreMarks	no
MarkAttachmentType	2

x placement	dot_below	-85

lookup end

lookup	7	single

RightToLeft	no
IgnoreBaseGlyphs	no
IgnoreLigatures	no
IgnoreMarks	no
MarkAttachmentType	2

x placement	dot_below	120

lookup end

{'repo_name': 'googlefonts/noto-source', 'stars': '434', 'repo_language': 'HTML', 'file_name': 'publish-one-noto-font.sh', 'mime_type': 'text/x-shellscript', 'hash': -1787447649571997970, 'source_dataset': 'data'}


package io.iohk.ethereum.consensus.ethash.difficulty

import io.iohk.ethereum.consensus.difficulty.DifficultyCalculator
import io.iohk.ethereum.domain.BlockHeader
import io.iohk.ethereum.utils.BlockchainConfig

class EthashDifficultyCalculator(blockchainConfig: BlockchainConfig) extends DifficultyCalculator {
  import blockchainConfig._

  val DifficultyBoundDivision: Int = 2048
  val FrontierTimestampDiffLimit: Int = -99
  val ExpDifficultyPeriod: Int = 100000
  val MinimumDifficulty: BigInt = 131072
  val ByzantiumRelaxDifficulty: BigInt = 3000000
  val ConstantinopleRelaxDifficulty: BigInt = 5000000

  def calculateDifficulty(blockNumber: BigInt, blockTimestamp: Long, parentHeader: BlockHeader): BigInt = {
    lazy val timestampDiff = blockTimestamp - parentHeader.unixTimestamp

    val x: BigInt = parentHeader.difficulty / DifficultyBoundDivision
    val c: BigInt =
      if (blockNumber < homesteadBlockNumber) {
        if (blockTimestamp < parentHeader.unixTimestamp + 13) 1 else -1
      } else if (blockNumber >= byzantiumBlockNumber || blockNumber >= blockchainConfig.atlantisBlockNumber) {
        val parentUncleFactor = if (parentHeader.ommersHash == BlockHeader.emptyOmmerHash) 1 else 2
        math.max(parentUncleFactor - (timestampDiff / 9), FrontierTimestampDiffLimit)
      } else  {
        math.max(1 - (timestampDiff / 10), FrontierTimestampDiffLimit)
      }

    val extraDifficulty: BigInt =
      if (blockNumber < difficultyBombRemovalBlockNumber) {
        // calculate a fake block number for the ice-age delay
        val fakeBlockNumber: BigInt =
          // https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1234.md
          if (blockNumber >= constantinopleBlockNumber) (blockNumber - ConstantinopleRelaxDifficulty).max(0)
          // https://github.com/ethereum/EIPs/blob/master/EIPS/eip-649.md
          else if (blockNumber >= byzantiumBlockNumber) (blockNumber - ByzantiumRelaxDifficulty).max(0)
          else blockNumber

        val difficultyBombExponent = calculateBombExponent(fakeBlockNumber)
        if (difficultyBombExponent >= 0)
          BigInt(2).pow(difficultyBombExponent)
        else 0
      } else
        0

    val difficultyWithoutBomb = MinimumDifficulty.max(parentHeader.difficulty + x * c)
    difficultyWithoutBomb + extraDifficulty
  }

  private def calculateBombExponent(blockNumber: BigInt): Int = {
    if (blockNumber < difficultyBombPauseBlockNumber)
      (blockNumber / ExpDifficultyPeriod - 2).toInt
    else if (blockNumber < difficultyBombContinueBlockNumber)
      ((difficultyBombPauseBlockNumber / ExpDifficultyPeriod) - 2).toInt
    else {
      val delay = (difficultyBombContinueBlockNumber - difficultyBombPauseBlockNumber) / ExpDifficultyPeriod
      ((blockNumber / ExpDifficultyPeriod) - delay - 2).toInt
    }
  }
}

{'repo_name': 'input-output-hk/mantis', 'stars': '160', 'repo_language': 'Scala', 'file_name': 'default.nix', 'mime_type': 'text/plain', 'hash': -1929241920712265951, 'source_dataset': 'data'}


.dropdown-select>.input-group-btn>.btn{
    border-top-left-radius:0;
    border-bottom-left-radius:0;
    margin-left: -1px;
}
.dropdown-select-menu{
    border: 1px solid #BCBCBC;
    border-top: none;
    width: 100%;
    position: absolute;
    left: 0;
    top: 100%;
    float: left;
    z-index: 1001;
    background: #ffffff;
    display: none;
    max-height: 200px;
    overflow: auto;
}
.dropdown-select  ::-webkit-scrollbar , .dropdown-select .scrollbar-track-color{
    height: 10px;
    width: 7px;
    background: #afa790
}
.dropdown-select ::-webkit-scrollbar:hover {
    background: #908873
}
.dropdown-select ::-webkit-scrollbar-thumb {
    background: #8e6a47;
    -webkit-border-radius: 6px;
    -moz-border-radius: 6px;
    -ms-border-radius: 6px;
    -o-border-radius: 6px;
    border-radius: 6px
}

.dropdown-select-menu ul,.dropdown-select-menu li{
    margin: 0;
    padding: 0;
    list-style: none;
}
.dropdown-select-menu li>a{
    display: block;
    padding: 5px 9px;
    clear: both;
    color: #333333;
    white-space: nowrap;
    font-weight: 400;
    text-decoration: none;
}
.dropdown-select-menu li>a:hover{
    text-decoration: none;
    background: #F5F5F5;
}

.dropdown-select-menu li .selected,.dropdown-select-menu li .selected:hover {
    background: #F47023;
    color: #ffffff;
}
.dropdown-select-menu ul{
    display: none;
}
.dropdown-select-menu>ul{
    display: block;
}
.dropdown-select-menu ul.active{
    display: block;
}
.dropdown-select-menu ul.active>li>a{
    border-left: 10px solid #E6E6E6;
}

{'repo_name': 'lifei6671/SmartWiki', 'stars': '478', 'repo_language': 'JavaScript', 'file_name': 'nprogress.css', 'mime_type': 'text/plain', 'hash': -3540029870843053738, 'source_dataset': 'data'}


/* config.h.in.  Generated from configure.ac by autoheader.  */

/* Define if the type of bitfields effects alignment. */
#undef HAVE_BITFIELD_TYPE_MATTERS

/* Define to 1 if the target assembler supports thread-local storage. */
#undef HAVE_CC_TLS

/* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H

/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H

/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H

/* Define to 1 if you have the <sched.h> header file. */
#undef HAVE_SCHED_H

/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H

/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H

/* Define to 1 if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H

/* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H

/* Define to 1 if you have the <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H

/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H

/* Define to 1 if the target supports thread-local storage. */
#undef HAVE_TLS

/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H

/* Define to the sub-directory in which libtool stores uninstalled libraries.
   */
#undef LT_OBJDIR

/* Define to the address where bug reports for this package should be sent. */
#undef PACKAGE_BUGREPORT

/* Define to the full name of this package. */
#undef PACKAGE_NAME

/* Define to the full name and version of this package. */
#undef PACKAGE_STRING

/* Define to the one symbol short name of this package. */
#undef PACKAGE_TARNAME

/* Define to the home page for this package. */
#undef PACKAGE_URL

/* Define to the version of this package. */
#undef PACKAGE_VERSION

/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS

{'repo_name': 'autc04/Retro68', 'stars': '257', 'repo_language': 'None', 'file_name': 'helpdoc.go', 'mime_type': 'text/plain', 'hash': 6394665103012117720, 'source_dataset': 'data'}


//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
//
// UNSUPPORTED: libcpp-has-no-threads
// UNSUPPORTED: c++03, c++11, c++14

// <mutex>

// template <class ...Mutex> class scoped_lock;

// scoped_lock(adopt_lock_t, Mutex&...);

#include <mutex>
#include <cassert>
#include "test_macros.h"

struct TestMutex {
    bool locked = false;
    TestMutex() = default;

    void lock() { assert(!locked); locked = true; }
    bool try_lock() { if (locked) return false; locked = true; return true; }
    void unlock() { assert(locked); locked = false; }

    TestMutex(TestMutex const&) = delete;
    TestMutex& operator=(TestMutex const&) = delete;
};

int main(int, char**)
{
    {
        using LG = std::scoped_lock<>;
        LG lg(std::adopt_lock);
    }
    {
        TestMutex m1;
        using LG = std::scoped_lock<TestMutex>;
        m1.lock();
        {
            LG lg(std::adopt_lock, m1);
            assert(m1.locked);
        }
        assert(!m1.locked);
    }
    {
        TestMutex m1, m2;
        using LG = std::scoped_lock<TestMutex, TestMutex>;
        m1.lock(); m2.lock();
        {
            LG lg(std::adopt_lock, m1, m2);
            assert(m1.locked && m2.locked);
        }
        assert(!m1.locked && !m2.locked);
    }
    {
        TestMutex m1, m2, m3;
        using LG = std::scoped_lock<TestMutex, TestMutex, TestMutex>;
        m1.lock(); m2.lock(); m3.lock();
        {
            LG lg(std::adopt_lock, m1, m2, m3);
            assert(m1.locked && m2.locked && m3.locked);
        }
        assert(!m1.locked && !m2.locked && !m3.locked);
    }

  return 0;
}

{'repo_name': 'llvm/llvm-project', 'stars': '5326', 'repo_language': 'C++', 'file_name': 'CodeViewSymbols.rst', 'mime_type': 'text/plain', 'hash': -4474152123036478371, 'source_dataset': 'data'}


GeoServer 2.9+ Teradata Extension
---------------------------------

This package contains a Teradata DataStore implementation that is
distributed as a separate plug-in.

Please report any bugs with jira (https://osgeo-org.atlassian.net/projects/GEOS).

Any other issues can be discussed on the mailing list (http://lists.sourceforge.net/lists/listinfo/geoserver-users).

Installation
------------

1. Copy gt2-jdbc-teradata jar into the WEB-INF/lib directory of your GeoServer
   installation.

2. Download the Teradata jdbc driver and unpack into WEB-INF/lib:

     https://downloads.teradata.com/download/connectivity/jdbc-driver

3. Restart GeoServer.

{'repo_name': 'geoserver/geoserver', 'stars': '1985', 'repo_language': 'Java', 'file_name': 'featuretype.xml', 'mime_type': 'text/html', 'hash': -6241570872814805010, 'source_dataset': 'data'}


/// <reference path="../../typings/tsd.d.ts" />

class defaultAceCompleter {

    static completer(): autoCompleteCompleter {
        const langTools = ace.require("ace/ext/language_tools");

        const defaultCompleters = [langTools.snippetCompleter, langTools.textCompleter, langTools.keyWordCompleter];

        return (editor: AceAjax.Editor, session: AceAjax.IEditSession, pos: AceAjax.Position, prefix: string, callback: (errors: any[], wordlist: autoCompleteWordList[]) => void) => {
            let remaingCount = defaultCompleters.length;
            let matches = [] as Array<autoCompleteWordList>;
            defaultCompleters.forEach(completer => {
                completer.getCompletions(editor, session, pos, prefix, (localErrors: any[], localResults: autoCompleteWordList[]) => {
                    if (!localErrors && localResults)
                        matches = matches.concat(localResults);

                    remaingCount--;

                    if (!remaingCount) {
                        callback(null, matches);
                    }
                });
            });
        };

    }
}

export = defaultAceCompleter;

{'repo_name': 'ravendb/ravendb', 'stars': '2472', 'repo_language': 'C#', 'file_name': 'CriticalCulturesAttribute.cs', 'mime_type': 'text/plain', 'hash': -324884107801332153, 'source_dataset': 'data'}


//
//  main.m
//  SSAppURLsExample
//
//  Created by Jonathan Hersh on 8/25/13.
//  Copyright (c) 2013 Splinesoft. All rights reserved.
//

#import <UIKit/UIKit.h>

#import "SSAppDelegate.h"

int main(int argc, char *argv[])
{
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([SSAppDelegate class]));
    }
}

{'repo_name': 'splinesoft/SSAppURLs', 'stars': '172', 'repo_language': 'Objective-C', 'file_name': 'InfoPlist.strings', 'mime_type': 'text/plain', 'hash': -2259410115385745644, 'source_dataset': 'data'}


// Copyright Bruno Dutra 2016
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)

#include <meta/meta.hpp>

struct is_even {
    template<typename N>
    using invoke = meta::bool_<N::type::value % 2 == 0>;
};

<% env[:k].times do |k| %>

using <%= "xs#{k}" %> = meta::list<
    <%= ((k*n+1)..(k*n+n)).map { |i| "meta::int_<#{i}>" }.join(', ') %>
>;

#if defined(METABENCH)
using <%= "result#{k}" %> = meta::filter<<%= "xs#{k}" %>, is_even>;
#endif

<% end %>

int main() {}

{'repo_name': 'ldionne/metabench', 'stars': '138', 'repo_language': 'CMake', 'file_name': 'recursive_tuple.cpp.erb', 'mime_type': 'text/x-c++', 'hash': -1994893849706839329, 'source_dataset': 'data'}


/* File name comparison routine.

   Copyright (C) 2007-2019 Free Software Foundation, Inc.

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2, or (at your option)
   any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software Foundation,
   Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */

#ifdef HAVE_CONFIG_H
#include "config.h"
#endif

#ifdef HAVE_STRING_H
#include <string.h>
#endif

#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif

#include "filenames.h"
#include "safe-ctype.h"
#include "libiberty.h"

/*

@deftypefn Extension int filename_cmp (const char *@var{s1}, const char *@var{s2})

Return zero if the two file names @var{s1} and @var{s2} are equivalent.
If not equivalent, the returned value is similar to what @code{strcmp}
would return.  In other words, it returns a negative value if @var{s1}
is less than @var{s2}, or a positive value if @var{s2} is greater than
@var{s2}.

This function does not normalize file names.  As a result, this function
will treat filenames that are spelled differently as different even in
the case when the two filenames point to the same underlying file.
However, it does handle the fact that on DOS-like file systems, forward
and backward slashes are equal.

@end deftypefn

*/

int
filename_cmp (const char *s1, const char *s2)
{
#if !defined(HAVE_DOS_BASED_FILE_SYSTEM) \
    && !defined(HAVE_CASE_INSENSITIVE_FILE_SYSTEM)
  return strcmp(s1, s2);
#else
  for (;;)
    {
      int c1 = *s1;
      int c2 = *s2;

#if defined (HAVE_CASE_INSENSITIVE_FILE_SYSTEM)
      c1 = TOLOWER (c1);
      c2 = TOLOWER (c2);
#endif

#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
      /* On DOS-based file systems, the '/' and the '\' are equivalent.  */
      if (c1 == '/')
        c1 = '\\';
      if (c2 == '/')
        c2 = '\\';
#endif

      if (c1 != c2)
        return (c1 - c2);

      if (c1 == '\0')
        return 0;

      s1++;
      s2++;
    }
#endif
}

/*

@deftypefn Extension int filename_ncmp (const char *@var{s1}, const char *@var{s2}, size_t @var{n})

Return zero if the two file names @var{s1} and @var{s2} are equivalent
in range @var{n}.
If not equivalent, the returned value is similar to what @code{strncmp}
would return.  In other words, it returns a negative value if @var{s1}
is less than @var{s2}, or a positive value if @var{s2} is greater than
@var{s2}.

This function does not normalize file names.  As a result, this function
will treat filenames that are spelled differently as different even in
the case when the two filenames point to the same underlying file.
However, it does handle the fact that on DOS-like file systems, forward
and backward slashes are equal.

@end deftypefn

*/

int
filename_ncmp (const char *s1, const char *s2, size_t n)
{
#if !defined(HAVE_DOS_BASED_FILE_SYSTEM) \
    && !defined(HAVE_CASE_INSENSITIVE_FILE_SYSTEM)
  return strncmp(s1, s2, n);
#else
  if (!n)
    return 0;
  for (; n > 0; --n)
  {
      int c1 = *s1;
      int c2 = *s2;

#if defined (HAVE_CASE_INSENSITIVE_FILE_SYSTEM)
      c1 = TOLOWER (c1);
      c2 = TOLOWER (c2);
#endif

#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
      /* On DOS-based file systems, the '/' and the '\' are equivalent.  */
      if (c1 == '/')
        c1 = '\\';
      if (c2 == '/')
        c2 = '\\';
#endif

      if (c1 == '\0' || c1 != c2)
        return (c1 - c2);

      s1++;
      s2++;
  }
  return 0;
#endif
}

/*

@deftypefn Extension hashval_t filename_hash (const void *@var{s})

Return the hash value for file name @var{s} that will be compared
using filename_cmp.
This function is for use with hashtab.c hash tables.

@end deftypefn

*/

hashval_t
filename_hash (const void *s)
{
  /* The cast is for -Wc++-compat.  */
  const unsigned char *str = (const unsigned char *) s;
  hashval_t r = 0;
  unsigned char c;

  while ((c = *str++) != 0)
    {
      if (c == '\\')
	c = '/';
      c = TOLOWER (c);
      r = r * 67 + c - 113;
    }

  return r;
}

/*

@deftypefn Extension int filename_eq (const void *@var{s1}, const void *@var{s2})

Return non-zero if file names @var{s1} and @var{s2} are equivalent.
This function is for use with hashtab.c hash tables.

@end deftypefn

*/

int
filename_eq (const void *s1, const void *s2)
{
  /* The casts are for -Wc++-compat.  */
  return filename_cmp ((const char *) s1, (const char *) s2) == 0;
}

/*

@deftypefn Extension int canonical_filename_eq (const char *@var{a}, const char *@var{b})

Return non-zero if file names @var{a} and @var{b} are equivalent.
This function compares the canonical versions of the filenames as returned by
@code{lrealpath()}, so that so that different file names pointing to the same
underlying file are treated as being identical.

@end deftypefn

*/

int
canonical_filename_eq (const char * a, const char * b)
{
  char * ca = lrealpath(a);
  char * cb = lrealpath(b);
  int res = filename_eq (ca, cb);
  free (ca);
  free (cb);
  return res;
}

{'repo_name': 'riscv/riscv-gcc', 'stars': '155', 'repo_language': 'C', 'file_name': 'visium-protos.h', 'mime_type': 'text/x-c', 'hash': 7255142026560682906, 'source_dataset': 'data'}


var fs     = require('fs'),
    stream = require('stream'),
    needle = require('./../');

var url  = 'http://ibl.gamechaser.net/f/tagqfxtteucbuldhezkz/bt_level1.gz';

var resp = needle.get(url, { compressed: true, follow_max: 10 });
console.log('Downloading...');

resp.on('readable', function() {

  while (data = this.read()) {
    var lines = data.toString().split('\n');
    console.log('Got ' + lines.length + ' items.');
    // console.log(lines);
  }

})

resp.on('done', function(data) {
  console.log('Done');
})

{'repo_name': 'holzschu/a-shell', 'stars': '500', 'repo_language': 'Vim script', 'file_name': 'ft.vim', 'mime_type': 'text/plain', 'hash': -11650844269517774, 'source_dataset': 'data'}