// Path: lib/src/main/java/io/apptik/widget/Util.java
// public static <T> T requireNonNull(T o) {
//     if (o == null) {
//         throw new NullPointerException();
//     }
//     return o;
// }


import android.annotation.TargetApi;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewConfiguration;
import android.view.ViewGroup;
import android.view.ViewParent;
import android.view.accessibility.AccessibilityNodeInfo;
import android.view.accessibility.AccessibilityNodeProvider;
import androidx.core.content.ContextCompat;
import androidx.core.graphics.drawable.DrawableCompat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import io.apptik.widget.mslider.R;
import static android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction.ACTION_SCROLL_BACKWARD;
import static android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction.ACTION_SCROLL_FORWARD;
import static io.apptik.widget.Util.requireNonNull;
        if (!mIsUserSeekable || !isEnabled()) {
            return false;
        }
        final int xx = Math.round(event.getX());
        final int yy = Math.round(event.getY());

        int pointerIdx = event.getActionIndex();

        Thumb currThumb = null;
        if (event.getActionMasked() == MotionEvent.ACTION_DOWN
                || event.getActionMasked() == MotionEvent.ACTION_POINTER_DOWN) {
            LinkedList<Thumb> closestOnes =
                    getClosestThumb((int) event.getX(pointerIdx));

            if (isInScrollingContainer() && mDraggingThumbs.size() == 0 &&
                    exactTouched != null && pointerIdx > 0) {
                //we have been here before => we want to use the bar
                Thumb prevThumb = exactTouched.getFirst();
                onStartTrackingTouch(prevThumb);
                exactTouched = null;
            }

            if (closestOnes != null && !closestOnes.isEmpty()) {
                if (closestOnes.size() == 1) {
                    currThumb = closestOnes.getFirst();
                    if (isInScrollingContainer() && mDraggingThumbs.size() == 0) {
                        exactTouched = closestOnes;
                    }
                } else {
                    //we have more than one thumb at the same place and we touched there
// Path: lib/src/main/java/io/apptik/widget/Util.java
// public static <T> T requireNonNull(T o) {
//     if (o == null) {
//         throw new NullPointerException();
//     }
//     return o;
// }


// Path: lib/src/main/java/io/apptik/widget/MultiSlider.java
import android.annotation.TargetApi;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewConfiguration;
import android.view.ViewGroup;
import android.view.ViewParent;
import android.view.accessibility.AccessibilityNodeInfo;
import android.view.accessibility.AccessibilityNodeProvider;
import androidx.core.content.ContextCompat;
import androidx.core.graphics.drawable.DrawableCompat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import io.apptik.widget.mslider.R;
import static android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction.ACTION_SCROLL_BACKWARD;
import static android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction.ACTION_SCROLL_FORWARD;
import static io.apptik.widget.Util.requireNonNull;

        if (!mIsUserSeekable || !isEnabled()) {
            return false;
        }
        final int xx = Math.round(event.getX());
        final int yy = Math.round(event.getY());

        int pointerIdx = event.getActionIndex();

        Thumb currThumb = null;
        if (event.getActionMasked() == MotionEvent.ACTION_DOWN
                || event.getActionMasked() == MotionEvent.ACTION_POINTER_DOWN) {
            LinkedList<Thumb> closestOnes =
                    getClosestThumb((int) event.getX(pointerIdx));

            if (isInScrollingContainer() && mDraggingThumbs.size() == 0 &&
                    exactTouched != null && pointerIdx > 0) {
                //we have been here before => we want to use the bar
                Thumb prevThumb = exactTouched.getFirst();
                onStartTrackingTouch(prevThumb);
                exactTouched = null;
            }

            if (closestOnes != null && !closestOnes.isEmpty()) {
                if (closestOnes.size() == 1) {
                    currThumb = closestOnes.getFirst();
                    if (isInScrollingContainer() && mDraggingThumbs.size() == 0) {
                        exactTouched = closestOnes;
                    }
                } else {
                    //we have more than one thumb at the same place and we touched there
                    exactTouched = closestOnes;